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;