Platform SDK: DirectX |
The information in this section pertains only to applications written in C and C++. See Direct3D Immediate Mode Visual Basic Tutorials.
The Enumeration application uses the following structure to hold information about the enumerated Direct3D devices:
struct D3DDEVICEINFO { // D3D Device info CHAR strDesc[40]; GUID* pDeviceGUID; D3DDEVICEDESC7 ddDeviceDesc; BOOL bHardware; // DDraw Driver info GUID* pDriverGUID; DDCAPS ddDriverCaps; DDCAPS ddHELCaps; // DDraw Mode Info DDSURFACEDESC2 ddsdMode; BOOL bFullscreen; // For internal use (apps should not need these) GUID guidDevice; GUID guidDriver; DDSURFACEDESC2 ddsdModes[100]; DWORD dwNumModes; DWORD dwCurrentMode; BOOL bDesktopCompatible; };
The Enumeration application initiates enumeration with the following call:
INT UserDlgSelectDriver( HWND hwndParent ) { // Enumerate drivers, devices, and modes DirectDrawEnumerateEx( DriverEnumCallback, NULL, DDENUM_ATTACHEDSECONDARYDEVICES | DDENUM_DETACHEDSECONDARYDEVICES | DDENUM_NONDISPLAYDEVICES );
In the preceding code, the DirectDrawEnumerateEx method is used to enumerate the drivers, devices, and display modes available on the system. The first parameter, DriverEnumCallback, is the address of a DDEnumCallbackEx function that will be called with a description of each enumerated DirectDraw-enabled HAL.
The process of enumerating devices for your application can be broken down into the following steps:
The first step for an application that uses device enumeration is to retrieve a reference to the DirectDraw driver. Driver enumeration is explained in Step 1.1: Enumerate Driver Information.
For more information on starting device enumeration, see Starting Device Enumeration.