Applications use the methods of the IDirectInputDevice interface to gain and release access to DirectInput devices, manage device properties and information, set behavior, perform initialization, and invoke a device's control panel. The IDirectInputDevice2 interface adds force feedback capabilities and support for polled devices.
The IDirectInputDevice interface is obtained by using the IDirectInput::CreateDevice method. The IDirectInputDevice2 interface is obtained by calling the IDirectInputDevice::QueryInterface method; for an example, see Creating a DirectInput Device.
This section is a reference to the methods of these interfaces.
The methods of the IDirectInputDevice interface can be organized into the following groups.
| Accessing input devices | Acquire |
| Unacquire | |
| Device information | GetCapabilities |
| GetDeviceData | |
| GetDeviceInfo | |
| GetDeviceState | |
| SetDataFormat | |
| SetEventNotification | |
| Device objects | EnumObjects |
| GetObjectInfo | |
| Device properties | GetProperty |
| SetProperty | |
| Setting behavior | SetCooperativeLevel |
| Miscellaneous | Initialize |
| RunControlPanel |
The IDirectInputDevice interface, like all COM interfaces, inherits the IUnknown interface methods. The IUnknown interface supports the following three methods:
| AddRef | |
| QueryInterface | |
| Release |
The IDirectInputDevice2 interface supports all the above methods as well as the following additional methods:
| CreateEffect | |
| EnumCreatedEffectObjects | |
| EnumEffects | |
| Escape | |
| GetEffectInfo | |
| GetForceFeedbackState | |
| Poll | |
| SendDeviceData | |
| SendForceFeedbackCommand |
The LPDIRECTINPUTDEVICE and LPDIRECTINPUTDEVICE2 types are defined as pointers to the IDirectInput interface:
typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;