DIACTIONFORMAT

Contains information about the calling application and acts as a container for an array of DIACTION structures that define action-to-control mappings for a genre.

typedef struct DIACTIONFORMAT {
    DWORD dwSize;
    DWORD dwActionSize;
    DWORD dwDataSize;
    DWORD dwNumActions;
    LPDIACTION rgoAction;
    GUID guidActionMap;
    DWORD dwGenre;
    DWORD dwBufferSize;
    LONG lAxisMin;
    LONG lAxisMax;
    HINSTANCE hInstString;
    FILETIME ftTimeStamp;
    DWORD dwCRC;
    TCHAR tszActionMap[MAX_PATH];
} DIACTIONFORMAT, *LPDIACTIONFORMAT;

Members

dwSize
DWORD value that specifies the size of the DIACTIONFORMAT structure, in bytes.
dwActionSize
DWORD value that specifies the size of the DIACTION structure, in bytes.
dwDataSize
DWORD value that specifies the size of the device data to be returned by the device for immediate device data, in bytes. This member should be dwNumActions multiplied by four.
dwNumActions
DWORD value that specifies the number of elements in the rgoAction array.
rgoAction
Address of an array of DIACTION structures, each of which describes how an action maps to a virtual control or device object, and how the mapping information should be displayed to the user.
guidActionMap
Globally unique identifier (GUID) that identifies the action map. Device manufacturers can use this value to tune mappings for a specific title.
dwGenre
DWORD value that specifies the genre of the application. For possible values, see Action Mapping Constants.
dwBufferSize
DWORD value that specifies the number of input data packets in the buffer for each device to which this action map is to be applied. The buffer size must be set to a value greater than zero in order to retrieve data by using IDirectInputDevice8::GetDeviceData. Applications that set this member to the desired buffer size before calling IDirectInputDevice8::SetActionMap do not need to set the DIPROP_BUFFERSIZE property by using IDirectInputDevice8::SetProperty.
lAxisMin

Minimum value for the range of scaled data to be returned for all axes. This value is ignored for a specific action axis if the DIA_NORANGE flag is set in DIACTION.dwFlags.

This value is valid only for axis actions and should be set to zero for all other actions. It is used as the DIPROPRANGE.lmin value to set the range property on an absolute axis when the action map is applied using IDirectInputDevice8::SetActionMap.

lAxisMax

Maximum value for the range of scaled data to be returned for all axes. This value is ignored for a specific action axis if the DIA_NORANGE flag is set in DIACTION.dwFlags.

This value is valid only for axis actions and should be set to zero for all other actions. It is used as the DIPROPRANGE.lmax value to set the range property on an absolute axis when the action map is applied using IDirectInputDevice8::SetActionMap.

hInstString
Handle of the module containing string resources for action names, as specified in the uResIdString member of the DIACTION structure for each action. Can be zero if action names are specified in the lptszActionName member of the DIACTION structure for each action.
ftTimeStamp
FILETIME structure that receives the time at which this action map was last written to disk. See Remarks.
dwCRC
Cyclic redundancy check for this map. Used internally by DirectInput to determine when a set of mappings should be saved to disk.
tszActionMap
Null-terminated string, of maximum length MAX_PATH, that specifies the friendly name for this action map. This string appears in the drop-down list box in the default property sheet.

Remarks

The ftTimeStamp member can contain special values that apply to new and unused devices. New devices have never been enumerated for this application and have never had an action map applied to them. Unused devices have been enumerated for the application before but have never had an action map applied. New devices always have DIAFTS_NEWDEVICELOW and DIAFTS_NEWDEVICEHIGH in the low and high DWORDs respectively of the FILETIME structure. Unused devices have DIAFTS_UNUSEDDEVICELOW and DIAFTS_UNUSEDDEVICEHIGH in these positions.

Applications should not use ftTimeStamp to check for new devices. Instead, they should look for the DIEDBS_RECENTDEVICE and DIEDBS_NEWDEVICE flags in the enumeration callback. For more information, see DIEnumDevicesBySemanticsCallback.

See Also

IDirectInput8::EnumDevicesBySemantics, IDirectInputDevice8::SetActionMap, IDirectInput8::ConfigureDevices, IDirectInputDevice8::BuildActionMap, Action Mapping