The interfaces in the DirectX 2 SDK have been created at a very basic level of the COM programming hierarchy. Each main device object interface, such as IDirectDraw, IDirectSound, or IDirectPlay, derives directly from the IUnknown interface in OLE. Creation of these basic objects is handled by specialized functions in the dynamic link library (DLL) for each object rather than by the Win32 CoCreateInstance function typically used to create COM objects.
In general, the DirectX 2 SDK object model provides one main object for each device, from which other support service objects are derived. For example, the DirectDraw object represents the display adapter. It is used to create DirectDrawSurface objects that represent the display RAM 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.