Partager via


UPnP AV Framework Class Organization (Windows Embedded CE 6.0)

1/6/2010

The UPnP AV Framework is implemented in a number of C++ classes. Developers using the UPnP AV Framework only work directly with a subset of these classes, but it is helpful to understand both the general naming convention for all classes and the high-level purpose of the classes that developers do not use directly.

Note

Only classes that are regularly used by developers are documented in detail. The other classes are listed here only for overview purposes.

The following table shows classes in the UPnP AV Framework.

Class Description

IAVTransport

IConnectionManager

IContentDirectory

IRenderingControl

Pure virtual classes at the root of the class hierarchy used for customization. These classes define methods for actions in the corresponding service.

Control points call these methods to access functionality. Devices implement these methods to provide functionality.

IAVTransportImpl

IConnectionManagerImpl

IContentDirectoryImpl

IRenderingControlImpl

Abstract base classes that inherit from the pure virtual classes at the top of the hierarchy, such as IAVTransport. These classes provide default implementations of these services.

Developers derive from these classes and provide method overrides that implement their device's functionality.

With the exception of IConnectionManagerImpl, the only content in each class are do-nothing method overrides for methods that correspond to optional actions.

IConnectionManagerImpl contains connection and protocol management code. Although it provides the majority of the necessary functionality, it still requires implementations of IConnectionManagerImpl::CreateConnection and IConnectionManagerImpl::EndConnection to enable custom connection preparation and termination code, and calls to IConnectionManagerImpl::AddSinkProtocol and IConnectionManagerImpl::AddSourceProtocol to define the protocols supported by the instance.

MediaRendererDevice

MediaServerDevice

Classes that can be instantiated by control points. These classes in turn provide the UPnP AV Framework control point proxy classes that control points use to communicate with UPnP AV devices.

IEventSink

IEventSource

IVirtualService

Pure virtual classes that provide state variable methods and virtual service support. IEventSink and IEventSource provide state variable support. IVirtualService provides virtual service support for use by theAVTransport and RenderingControl services.

The pure virtual classes at the top of the hierarchy, like IAVTransport, inherit from IEventSource and, for IAVTransport and IRenderingControl, from IVirtualService.

Control points implement IEventSink to receive event notifications.

parser (UPnP AV)

object (UPnP AV) (structure)

Utility classes that provide object-oriented access to information returned by a ContentDirectory instance.

Control points use these classes to interact with ContentDirectory data.

These classes are defined in a subset of the av_upnp namespace: av_upnp::DIDL_Lite.

wstring class (UPnP AV)

Provides an object-oriented representation of a string.

AVTransportService

AVTransportServiceImpl

ConnectionManagerService

ConnectionManagerServiceImpl

ContentDirectoryService

ContentDirectoryServiceImpl

RenderingControlService

RenderingControlServiceImpl

Internal utility classes that implement the COM objects required for integration with the general purpose UPnP Device Host API.

Devices that use the UPnP AV Framework create instances of these classes but do not modify or change the classes.

For general information about how custom device implementations use classes such as AVTransportService and ConnectionManagerService, see Registering Device Implementations.

UPnPErrorReporting

IEventSinkSupport

ModeratedEventSupport

VirtualServiceSupport

Utility classes used for internal processing.

Custom device implementations and control points do not usually use or modify these classes.

All of the classes in the above table are defined in the av_upnp C++ namespace. This namespace is usually aliased so it can be referred to in code as the av namespace. For more information about namespaces in the UPnP AV Framework, see C++ Namespaces in the UPnP AV Framework. (The parser class and object structure are defined in a subset of the av_upnp namespace: av_upnp::DIDL_Lite.)

See Also

Other Resources

Using the UPnP AV Framework