VJREGDRVINFO structure
The VJREGDRVINFO structure passes the new style registration information to VJoyD. All of the members of this structure must be filled in, although the version members can be set to zero for unknown, and the last four pointers can be set selectively to none.
Syntax
typedef struct {
DWORD dwSize;
DWORD dwFunction;
DWORD dwFlags;
LPSTR lpszOEMCallout;
DWORD dwFirmwareRevision;
DWORD dwHardwareRevision;
DWORD dwDriverVersion;
LPVJDEVICEDESC lpDeviceDesc;
LPVJPOLLREG lpPollReg;
LPVJFORCEREG lpForceReg;
LPVJGPEMULREG lpGPEmulReg;
} VJREGDRVINFO, *LPVJREGDRVINFO;
Members
dwSize
Specifies the size, in bytes, of the structure. This member must be initialized before the structure is used.dwFunction
Indicates the type of registration to be performed. This value can be one of the following:VJRT_CHANGE
Indicates that anything can change except the driver and initialization parameters. Reserved for future use.VJRT_LOADED
Indicates that the driver has been loaded.VJRT_PLUG
Indicates a new instance of a device. Reserved for future use.VJRT_UNPLUG
Indicates to VJoyD that a registered device is no longer available. Reserved for future use.
dwFlags
Flags associated with this registration. One or more of the following:- VJDF_UNUSED
Indicates the driver is not in use.
The following flags are interface attributes (that is, the result is a combination of OEM flags and VJoyD):
VJDF_UNIT_ID
Indicates the unit ID is valid.VJDF_ISHID
Indicates that this is an HID device, so refuse polls.VJDF_SENDSNOTIFY
Indicates the driver calls VJOYD_DeviceUpdateNotify_Service.VJDF_NEWIF
Indicates that use new interface may be changed on registration (is set by VJoyD).VJDF_ATTR_MASK
Indicates a combination of VJDF_NEWIF, VJDF_UNIT_ID, and VJDF_ISHID.VJDF_UNIT_ID
Indicates the unit ID is valid.VJDF_ISHID
Indicates that this is an HID device, so refuse polls.VJDF_SENDSNOTIFY
Indicates the driver calls VJOYD_DeviceUpdateNotify_Service.VJDF_NEWIF
Indicates that use new interface may be changed on registration (is set by VJoyD).VJDF_ATTR_MASK
Indicates a combination of VJDF_NEWIF, VJDF_UNIT_ID, and VJDF_ISHID.
The following flags are interface requirements:
VJDF_AUTOLOAD
Indicates that VxD must not be loaded by VJoyD.VJDF_HOTPLUG
Uses PLUG/UNPLUG.VJDF_IF_REQ_MASK
Indicates a combination of VJDF_AUTOLOAD and VJDF_HOTPLUG.VJDF_AUTOLOAD
Indicates that VxD must not be loaded by VJoyD.VJDF_HOTPLUG
Uses PLUG/UNPLUG.VJDF_IF_REQ_MASK
Indicates a combination of VJDF_AUTOLOAD and VJDF_HOTPLUG.
The following are device node requirement flags:
VJDF_NODEVNODE
Indicates that the device did not get its resources via CFG_MGR.VJDF_ISANALOGPORTDRIVER
Indicates that the device plugs into a standard game port.VJDF_NOCHAINING
Indicates a limit of one device node per device.VJDF_DN_REQ_MASK
Indicates a combination of the attributes signified by the VJDF_NODEVNODE, VJDF_ISANALOGPORTDRIVER, and VJDF_NOCHAINING flags.VJDF_NODEVNODE
Indicates that the device did not get its resources via CFG_MGR.VJDF_ISANALOGPORTDRIVER
Indicates that the device plugs into a standard game port.VJDF_NOCHAINING
Indicates a limit of one device node per device.VJDF_DN_REQ_MASK
Indicates a combination of the attributes signified by the VJDF_NODEVNODE, VJDF_ISANALOGPORTDRIVER, and VJDF_NOCHAINING flags.
- VJDF_UNUSED
lpszOEMCallout
Points to a string, such as "Msanalog.vxd", that identifies the driver associated with this registration.dwFirmwareRevision
Specifies the firmware revision of the device. If the revision is unknown, a value of zero should be used.dwHardwareRevision
Specifies the hardware revision of the device. If the revision is unknown, a value of zero should be used.dwDriverVersion
Specifies the version number of the device driver. If the revision is unknown, a value of zero should be used.lpDeviceDesc
Points to a VJDEVICEDESC structure that describes the configuration properties of the device. This allows drivers to supply the description of the device rather than use the registry for this purpose. If no description is available, this member should be set to NULL.lpPollReg
Points to a VJPOLLREG structure that contains the most common driver callbacks. In the very rare case that a driver does need to register any of these callbacks, this member should be set to NULL.lpForceReg
Points to a VJFORCEREG structure that contains all of the force feedback specific callbacks. If the ring 0 (kernel mode) driver does not support force feedback, this member should be set to NULL.lpGPEmulReg
Reserved. This member must be set to NULL.