Microsoft DirectX 8.1 (C++)

DIDEVICEINSTANCE

Describes an instance of a Microsoft® DirectInput® device. This structure is used with the IDirectInput8::EnumDevices, IDirectInput8::EnumDevicesBySemantics, and IDirectInputDevice8::GetDeviceInfo methods.

typedef struct DIDEVICEINSTANCE { 
    DWORD dwSize; 
    GUID  guidInstance; 
    GUID  guidProduct; 
    DWORD dwDevType; 
    TCHAR tszInstanceName[MAX_PATH]; 
    TCHAR tszProductName[MAX_PATH];
    GUID  guidFFDriver;
    WORD  wUsagePage; 
    WORD  wUsage;
} DIDEVICEINSTANCE, *LPDIDEVICEINSTANCE; 
 
typedef const DIDEVICEINSTANCE  *LPCDIDEVICEINSTANCE;

Members

dwSize
Size of this structure, in bytes. This member must be initialized before the structure is used.
guidInstance
Unique identifier for the instance of the device. An application can save the instance GUID into a configuration file and use it at a later time. Instance GUIDs are specific to a particular computer. An instance GUID obtained from one computer is unrelated to instance GUIDs on another.
guidProduct
Unique identifier for the product. This identifier is established by the manufacturer of the device.
dwDevType
Device type specifier. The least-significant byte of the device type description code specifies the device type. The next-significant byte specifies the device subtype. This value can also be combined with DIDEVTYPE_HID, which specifies a Human Interface Device (HID).
tszInstanceName[MAX_PATH]
Friendly name for the instance. For example, "Joystick 1."
tszProductName[MAX_PATH]
Friendly name for the product.
guidFFDriver
Unique identifier for the driver being used for force feedback. The driver's manufacturer establishes this identifier.
wUsagePage
If the device is a Human Interface Device (HID), this member contains the HID usage page code.
wUsage
If the device is a Human Interface Device (HID), this member contains the HID usage code.

Remarks

The following device types and subtypes are defined for use in the dwDevType member.

DI8DEVTYPE_1STPERSON
First-person action game device. The following subtypes are defined.
DI8DEVTYPE1STPERSON_LIMITED
Device that does not provide the minimum number of device objects for action mapping.
DI8DEVTYPE1STPERSON_SHOOTER
Device designed for first-person shooter games.
DI8DEVTYPE1STPERSON_SIXDOF
Device with six degrees of freedom; that is, three lateral axes and three rotational axes.
DI8DEVTYPE1STPERSON_UNKNOWN
Unknown subtype.
DI8DEVTYPE_DEVICE
Device that does not fall into another category.
DI8DEVTYPE_DEVICECTRL
Input device used to control another type of device from within the context of the application. The following subtypes are defined.
DI8DEVTYPEDEVICECTRL_COMMSSELECTION
Control used to make communications selections.
DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED
Device that must use its default configuration and cannot be remapped.
DI8DEVTYPEDEVICECTRL_UNKNOWN
Unknown subtype.
DI8DEVTYPE_DRIVING
Device for steering. The following subtypes are defined.
DI8DEVTYPEDRIVING_COMBINEDPEDALS
Steering device that reports acceleration and brake pedal values from a single axis.
DI8DEVTYPEDRIVING_DUALPEDALS
Steering device that reports acceleration and brake pedal values from separate axes.
DI8DEVTYPEDRIVING_HANDHELD
Hand-held steering device.
DI8DEVTYPEDRIVING_LIMITED
Steering device that does not provide the minimum number of device objects for action mapping.
DI8DEVTYPEDRIVING_THREEPEDALS
Steering device that reports acceleration, brake, and clutch pedal values from separate axes.
DI8DEVTYPE_FLIGHT
Controller for flight simulation. The following subtypes are defined.
DI8DEVTYPEFLIGHT_LIMITED
Flight controller that does not provide the minimum number of device objects for action mapping.
DI8DEVTYPEFLIGHT_RC
Flight device based on a remote control for model aircraft.
DI8DEVTYPEFLIGHT_STICK
Joystick.
DI8DEVTYPEFLIGHT_YOKE
Yoke.
DI8DEVTYPE_GAMEPAD
Gamepad. The following subtypes are defined.
DI8DEVTYPEGAMEPAD_LIMITED
Gamepad that does not provide the minimum number of device objects for action mapping.
DI8DEVTYPEGAMEPAD_STANDARD
Standard gamepad that provides the minimum number of device objects for action mapping.
DI8DEVTYPEGAMEPAD_TILT
Gamepad that can report x-axis and y-axis data based on the attitude of the controller.
DI8DEVTYPE_JOYSTICK
Joystick. The following subtypes are defined.
DI8DEVTYPEJOYSTICK_LIMITED
Joystick that does not provide the minimum number of device objects for action mapping.
DI8DEVTYPEJOYSTICK_STANDARD
Standard joystick that provides the minimum number of device objects for action mapping.
DI8DEVTYPE_KEYBOARD
Keyboard or keyboard-like device. The following subtypes are defined.
DI8DEVTYPEKEYBOARD_UNKNOWN
Subtype could not be determined.
DI8DEVTYPEKEYBOARD_PCXT
IBM PC/XT 83-key keyboard.
DI8DEVTYPEKEYBOARD_OLIVETTI
Olivetti 102-key keyboard.
DI8DEVTYPEKEYBOARD_PCAT
IBM PC/AT 84-key keyboard.
DI8DEVTYPEKEYBOARD_PCENH
IBM PC Enhanced 101/102-key or Microsoft Natural® keyboard.
DI8DEVTYPEKEYBOARD_NOKIA1050
Nokia 1050 keyboard.
DI8DEVTYPEKEYBOARD_NOKIA9140
Nokia 9140 keyboard.
DI8DEVTYPEKEYBOARD_NEC98
Japanese NEC PC98 keyboard.
DI8DEVTYPEKEYBOARD_NEC98LAPTOP
Japanese NEC PC98 laptop keyboard.
DI8DEVTYPEKEYBOARD_NEC98106
Japanese NEC PC98 106-key keyboard.
DI8DEVTYPEKEYBOARD_JAPAN106
Japanese 106-key keyboard.
DI8DEVTYPEKEYBOARD_JAPANAX
Japanese AX keyboard.
DI8DEVTYPEKEYBOARD_J3100
Japanese J3100 keyboard.
DI8DEVTYPE_MOUSE
A mouse or mouse-like device (such as a trackball). The following subtypes are defined.
DI8DEVTYPEMOUSE_ABSOLUTE
Mouse that returns absolute axis data.
DI8DEVTYPEMOUSE_FINGERSTICK
Fingerstick.
DI8DEVTYPEMOUSE_TOUCHPAD
Touchpad.
DI8DEVTYPEMOUSE_TRACKBALL
Trackball.
DI8DEVTYPEMOUSE_TRADITIONAL
Traditional mouse.
DI8DEVTYPEMOUSE_UNKNOWN
Subtype could not be determined.
DI8DEVTYPE_REMOTE
Remote-control device. The following subtype is defined.
DI8DEVTYPEREMOTE_UNKNOWN
Subtype could not be determined.
DI8DEVTYPE_SCREENPOINTER
Screen pointer. The following subtypes are defined.
DI8DEVTYPESCREENPTR_UNKNOWN
Unknown subtype.
DI8DEVTYPESCREENPTR_LIGHTGUN
Light gun.
DI8DEVTYPESCREENPTR_LIGHTPEN
Light pen.
DI8DEVTYPESCREENPTR_TOUCH
Touch screen.
DI8DEVTYPE_SUPPLEMENTAL
Specialized device with functionality unsuitable for the main control of an application, such as pedals used with a wheel. The following subtypes are defined.
DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER
Secondary handheld controller.
DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS
Device whose primary function is to report acceleration and brake pedal values from a single axis.
DI8DEVTYPESUPPLEMENTAL_DUALPEDALS
Device whose primary function is to report acceleration and brake pedal values from separate axes.
DI8DEVTYPESUPPLEMENTAL_HANDTRACKER
Device that tracks hand movement.
DI8DEVTYPESUPPLEMENTAL_HEADTRACKER
Device that tracks head movement.
DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS
Device with rudder pedals.
DI8DEVTYPESUPPLEMENTAL_SHIFTER
Device that reports gear selection from an axis.
DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE
Device that reports gear selection from button states.
DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE
Device whose primary function is to report at least two throttle values. It may have other controls.
DI8DEVTYPESUPPLEMENTAL_THREEPEDALS
Device whose primary function is to report acceleration, brake, and clutch pedal values from separate axes.
DI8DEVTYPESUPPLEMENTAL_THROTTLE
Device whose primary function is to report a single throttle value. It may have other controls.
DI8DEVTYPESUPPLEMENTAL_UNKNOWN
Unknown subtype.

Versions of DirectInput earlier than Microsoft DirectX® 8.0 have a somewhat different scheme of device types and subtypes. See the DIDEVTYPExxx defines in Dinput.h.

Requirements

  Windows NT/2000/XP: Requires Windows 2000.
  Windows 98/Me: Requires Windows 98 or later. Available as a redistributable for Windows 98.
  Header: Declared in Dinput.h.