Device Capabilities
Microsoft DirectX 9.0 SDK Update (October 2004)

Device Capabilities


Before you begin asking for input from a device, you need to know something about its capabilities. Does the joystick have a point-of-view hat? Is the mouse currently attached to the user's computer?

Such questions are answered with a call to the IDirectInputDevice8::GetCapabilities method, which returns the data in a DIDEVCAPS structure. As with other such structures in Microsoft DirectX, you must initialize the dwSize member before passing this structure to the method.

Note  To optimize speed or memory usage, you can use the smaller DIDEVCAPS_DX3 structure instead. For structure details, see Dinput.h.

The following code example checks whether the mouse is attached and whether it has a third axis (presumably a wheel). Assume that lpdiMouse is a valid Microsoft DirectInput device.

DIDEVCAPS  DIMouseCaps; 
HRESULT    hr; 
BOOLEAN    WheelAvailable; 

DIMouseCaps.dwSize = sizeof(DIDEVCAPS); 
hr = lpdiMouse->GetCapabilities(&DIMouseCaps); 
WheelAvailable = ((DIMouseCaps.dwFlags & DIDC_ATTACHED) 
        && (DIMouseCaps.dwAxes > 2)); 

Another way to check for a button or axis is to call IDirectInputDevice8::GetObjectInfo for that object. If the call returns DIERR_OBJECTNOTFOUND, the object is not present. The following code determines whether there is a z-axis, even if it is not the third axis:

DIDEVICEOBJECTINSTANCE  didoi; 

didoi.dwSize = sizeof(DIDEVICEOBJECTINSTANCE); 
hr = lpdiMouse->GetObjectInfo(&didoi, DIMOFS_Z, DIPH_BYOFFSET); 
WheelAvailable = SUCCEEDED(hr); 


© 2004 Microsoft Corporation. All rights reserved.
Feedback? Please provide us with your comments on this topic.
For more help, visit the DirectX Developer Center.