The interfaces in the DirectX Programmer's Reference have been created at a very basic level of COM programming hierarchy. Each interface to an object that represents a device, such as IDirectDraw2, IDirectSound, and IDirectPlay, derives directly from the IUnknown COM interface. Creation of these basic objects is handled by specialized functions in the dynamic-link library (DLL) for each object, rather than by the CoCreateInstance function typically used to create COM objects.
Typically, the DirectX object model provides one main object for each device. Other support service objects are derived from this main object. For example, the DirectDraw object represents the display adapter. You can use it to create DirectDrawSurface objects that represent the display memory and DirectDrawPalette objects that represent hardware palettes. Similarly, the DirectSound object represents the audio card and creates DirectSoundBuffer objects that represent the sound sources on that card.
Besides the ability to generate subordinate objects, the main device object determines the capabilities of the hardware device it represents, such as the screen size and number of colors, or whether the audio card has wave-table synthesis.