----------------------------------------
-- File : dinputd.ads --
-- Translator:Dongfeng.Gu,2018/10/29 --
-- Mail: 515639@qq.com --
-- Progress:100% --
----------------------------------------
with Ada.Characters.Handling; use Ada.Characters.Handling;
with win32; use win32;
with win32.Winreg; use win32.Winreg;
with win32.winnt; use win32.winnt;
with win32.windef; use win32.windef;
with win32.rpcdce; use win32.rpcdce;
with win32.Objbase; use win32.Objbase;
with dinput; use dinput;
package dinputd is
DIRECTINPUT_VERSION : constant := 16#0800#;
IID_IDirectInputEffectDriver:constant win32.rpcdce.GUID:=(16#02538130#,16#898F#,16#11D0#,(16#9A#,16#D0#,16#00#,16#A0#,16#C9#,16#A0#,16#6E#,16#35#));
IID_IDirectInputJoyConfig:constant win32.rpcdce.GUID:=(16#1DE12AB1#,16#C9F5#,16#11CF#,(16#BF#,16#C7#,16#44#,16#45#,16#53#,16#54#,16#00#,16#00#));
IID_IDirectInputPIDDriver:constant win32.rpcdce.GUID:=(16#EEC6993A#,16#B3FD#,16#11D2#,(16#A9#,16#16#,16#00#,16#C0#,16#4F#,16#B9#,16#86#,16#38#));
IID_IDirectInputJoyConfig8:constant win32.rpcdce.GUID:=(16#eb0d7dfa#,16#1990#,16#4f27#,(16#b4#,16#d6#,16#ed#,16#f2#,16#ee#,16#c4#,16#a4#,16#4c#));
type DIOBJECTATTRIBUTES is record
dwFlags: DWORD;
wUsagePage: WORD;
wUsage: WORD;
end record;
type LPDIOBJECTATTRIBUTES is access all DIOBJECTATTRIBUTES;
type LPCDIOBJECTATTRIBUTES is access constant DIOBJECTATTRIBUTES;
type DIFFOBJECTATTRIBUTES is record
dwFFMaxForce: DWORD;
dwFFForceResolution: DWORD;
end record;
type LPDIFFOBJECTATTRIBUTES is access all DIFFOBJECTATTRIBUTES;
type LPCDIFFOBJECTATTRIBUTES is access constant DIFFOBJECTATTRIBUTES;
type DIOBJECTCALIBRATION is record
lMin: LONG;
lCenter: LONG;
lMax: LONG;
end record;
type LPDIOBJECTCALIBRATION is access all DIOBJECTCALIBRATION;
type LPCDIOBJECTCALIBRATION is access constant DIOBJECTCALIBRATION;
type DIPOVCALIBRATION is record
lMin: LONG_Array(0..5-1);
lMax: LONG_Array(0..5-1);
end record;
type LPDIPOVCALIBRATION is access all DIPOVCALIBRATION;
type LPCDIPOVCALIBRATION is access constant DIPOVCALIBRATION;
type DIEFFECTATTRIBUTES is record
dwEffectId: DWORD;
dwEffType: DWORD;
dwStaticParams: DWORD;
dwDynamicParams: DWORD;
dwCoords: DWORD;
end record;
type LPDIEFFECTATTRIBUTES is access all DIEFFECTATTRIBUTES;
type LPCDIEFFECTATTRIBUTES is access constant DIEFFECTATTRIBUTES;
type DIFFDEVICEATTRIBUTES is record
dwFlags: DWORD;
dwFFSamplePeriod: DWORD;
dwFFMinTimeResolution: DWORD;
end record;
type LPDIFFDEVICEATTRIBUTES is access all DIFFDEVICEATTRIBUTES;
type LPCDIFFDEVICEATTRIBUTES is access constant DIFFDEVICEATTRIBUTES;
type DIDRIVERVERSIONS is record
dwSize: DWORD;
dwFirmwareRevision: DWORD;
dwHardwareRevision: DWORD;
dwFFDriverVersion: DWORD;
end record;
type LPDIDRIVERVERSIONS is access all DIDRIVERVERSIONS;
type LPCDIDRIVERVERSIONS is access constant DIDRIVERVERSIONS;
type DIDEVICESTATE is record
dwSize: DWORD;
dwState: DWORD;
dwLoad: DWORD;
end record;
type LPDIDEVICESTATE is access all DIDEVICESTATE;
DEV_STS_EFFECT_RUNNING : constant := 1;
type DIHIDFFINITINFO is record
dwSize: DWORD;
pwszDeviceInterface: LPWSTR;
GuidInstance: rpcdce.GUID;
end record;
type LPDIHIDFFINITINFO is access all DIHIDFFINITINFO;
type IDirectInputEffectDriver;
type LPIDirectInputEffectDriver is access all IDirectInputEffectDriver;
type LPLPIDirectInputEffectDriver is access all LPIDirectInputEffectDriver;
subtype LPDirectInputEffectDriver is LPIDirectInputEffectDriver;
subtype LPLPDirectInputEffectDriver is LPLPIDirectInputEffectDriver;
type IDirectInputEffectDriver is record
QueryInterface:access procedure(THIS:LPIDirectInputEffectDriver;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
AddRef:access function(THIS:LPIDirectInputEffectDriver) return ULONG with Convention=>Stdcall;
Release:access function(THIS:LPIDirectInputEffectDriver) return ULONG with Convention=>Stdcall;
DeviceID:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD;Arg4:DWORD;Arg5:DWORD;Arg6:LPVOID) with Convention=>Stdcall;
GetVersions:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:LPDIDRIVERVERSIONS) with Convention=>Stdcall;
Escape:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD;Arg4:LPDIEFFESCAPE) with Convention=>Stdcall;
SetGain:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD) with Convention=>Stdcall;
SendForceFeedbackCommand:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD) with Convention=>Stdcall;
GetForceFeedbackState:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:LPDIDEVICESTATE) with Convention=>Stdcall;
DownloadEffect:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD;Arg4:LPDWORD;Arg5:LPCDIEFFECT;Arg6:DWORD) with Convention=>Stdcall;
DestroyEffect:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD) with Convention=>Stdcall;
StartEffect:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD;Arg4:DWORD;Arg5:DWORD) with Convention=>Stdcall;
StopEffect:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD) with Convention=>Stdcall;
GetEffectStatus:access procedure(THIS:LPIDirectInputEffectDriver;Arg2:DWORD;Arg3:DWORD;Arg4:LPDWORD) with Convention=>Stdcall;
end record;
JOY_HW_NONE : constant := 0;
JOY_HW_CUSTOM : constant := 1;
JOY_HW_2A_2B_GENERIC : constant := 2;
JOY_HW_2A_4B_GENERIC : constant := 3;
JOY_HW_2B_GAMEPAD : constant := 4;
JOY_HW_2B_FLIGHTYOKE : constant := 5;
JOY_HW_2B_FLIGHTYOKETHROTTLE : constant := 6;
JOY_HW_3A_2B_GENERIC : constant := 7;
JOY_HW_3A_4B_GENERIC : constant := 8;
JOY_HW_4B_GAMEPAD : constant := 9;
JOY_HW_4B_FLIGHTYOKE : constant := 10;
JOY_HW_4B_FLIGHTYOKETHROTTLE : constant := 11;
JOY_HW_TWO_2A_2B_WITH_Y : constant := 12;
JOY_HW_LASTENTRY : constant := 13;
JOY_ISCAL_XY : constant := 16#00000001#; -- /* XY are calibrated */;
JOY_ISCAL_Z : constant := 16#00000002#; -- /* Z is calibrated */;
JOY_ISCAL_R : constant := 16#00000004#; -- /* R is calibrated */;
JOY_ISCAL_U : constant := 16#00000008#; -- /* U is calibrated */;
JOY_ISCAL_V : constant := 16#00000010#; -- /* V is calibrated */;
JOY_ISCAL_POV : constant := 16#00000020#; -- /* POV is calibrated */;
JOY_POV_NUMDIRS : constant := 4;
JOY_POVVAL_FORWARD : constant := 0;
JOY_POVVAL_BACKWARD : constant := 1;
JOY_POVVAL_LEFT : constant := 2;
JOY_POVVAL_RIGHT : constant := 3;
JOY_HWS_HASZ : constant := 16#00000001#; -- /* has Z info? */;
JOY_HWS_HASPOV : constant := 16#00000002#; -- /* point of view hat present */;
JOY_HWS_POVISBUTTONCOMBOS : constant := 16#00000004#; -- /* pov done through combo of buttons */;
JOY_HWS_POVISPOLL : constant := 16#00000008#; -- /* pov done through polling */;
JOY_HWS_ISYOKE : constant := 16#00000010#; -- /* joystick is a flight yoke */;
JOY_HWS_ISGAMEPAD : constant := 16#00000020#; -- /* joystick is a game pad */;
JOY_HWS_ISCARCTRL : constant := 16#00000040#; -- /* joystick is a car controller */;
JOY_HWS_XISJ1Y : constant := 16#00000080#; -- /* X is on J1 Y axis */;
JOY_HWS_XISJ2X : constant := 16#00000100#; -- /* X is on J2 X axis */;
JOY_HWS_XISJ2Y : constant := 16#00000200#; -- /* X is on J2 Y axis */;
JOY_HWS_YISJ1X : constant := 16#00000400#; -- /* Y is on J1 X axis */;
JOY_HWS_YISJ2X : constant := 16#00000800#; -- /* Y is on J2 X axis */;
JOY_HWS_YISJ2Y : constant := 16#00001000#; -- /* Y is on J2 Y axis */;
JOY_HWS_ZISJ1X : constant := 16#00002000#; -- /* Z is on J1 X axis */;
JOY_HWS_ZISJ1Y : constant := 16#00004000#; -- /* Z is on J1 Y axis */;
JOY_HWS_ZISJ2X : constant := 16#00008000#; -- /* Z is on J2 X axis */;
JOY_HWS_POVISJ1X : constant := 16#00010000#; -- /* pov done through J1 X axis */;
JOY_HWS_POVISJ1Y : constant := 16#00020000#; -- /* pov done through J1 Y axis */;
JOY_HWS_POVISJ2X : constant := 16#00040000#; -- /* pov done through J2 X axis */;
JOY_HWS_HASR : constant := 16#00080000#; -- /* has R (4th axis) info */;
JOY_HWS_RISJ1X : constant := 16#00100000#; -- /* R done through J1 X axis */;
JOY_HWS_RISJ1Y : constant := 16#00200000#; -- /* R done through J1 Y axis */;
JOY_HWS_RISJ2Y : constant := 16#00400000#; -- /* R done through J2 X axis */;
JOY_HWS_HASU : constant := 16#00800000#; -- /* has U (5th axis) info */;
JOY_HWS_HASV : constant := 16#01000000#; -- /* has V (6th axis) info */;
JOY_US_HASRUDDER : constant := 16#00000001#; -- /* joystick configured with rudder */;
JOY_US_PRESENT : constant := 16#00000002#; -- /* is joystick actually present? */;
JOY_US_ISOEM : constant := 16#00000004#; -- /* joystick is an OEM defined type */;
JOY_US_RESERVED : constant := 16#80000000#; -- /* reserved */;
JOYTYPE_ZEROGAMEENUMOEMDATA : constant := 16#00000001#; -- /* Zero GameEnum's OEM data field */;
JOYTYPE_NOAUTODETECTGAMEPORT : constant := 16#00000002#; -- /* Device does not support Autodetect gameport*/;
JOYTYPE_NOHIDDIRECT : constant := 16#00000004#; -- /* Do not use HID directly for this device */;
JOYTYPE_ANALOGCOMPAT : constant := 16#00000008#; -- /* Expose the analog compatible ID */;
JOYTYPE_DEFAULTPROPSHEET : constant := 16#80000000#; -- /* CPL overrides custom property sheet */;
JOYTYPE_DEVICEHIDE : constant := 16#00010000#; -- /* Hide unclassified devices */;
JOYTYPE_MOUSEHIDE : constant := 16#00020000#; -- /* Hide mice */;
JOYTYPE_KEYBHIDE : constant := 16#00040000#; -- /* Hide keyboards */;
JOYTYPE_GAMEHIDE : constant := 16#00080000#; -- /* Hide game controllers */;
JOYTYPE_HIDEACTIVE : constant := 16#00100000#; -- /* Hide flags are active */;
JOYTYPE_INFOMASK : constant := 16#00E00000#; -- /* Mask for type specific info */;
JOYTYPE_INFODEFAULT : constant := 16#00000000#; -- /* Use default axis mappings */;
JOYTYPE_INFOYYPEDALS : constant := 16#00200000#; -- /* Use Y as a combined pedals axis */;
JOYTYPE_INFOZYPEDALS : constant := 16#00400000#; -- /* Use Z for accelerate, Y for brake */;
JOYTYPE_INFOYRPEDALS : constant := 16#00600000#; -- /* Use Y for accelerate, R for brake */;
JOYTYPE_INFOZRPEDALS : constant := 16#00800000#; -- /* Use Z for accelerate, R for brake */;
JOYTYPE_INFOZISSLIDER : constant := 16#00200000#; -- /* Use Z as a slider */;
JOYTYPE_INFOZISZ : constant := 16#00400000#; -- /* Use Z as Z axis */;
JOYTYPE_ENABLEINPUTREPORT : constant := 16#01000000#; -- /* Enable initial input reports */;
type joypos_tag is record
dwX: DWORD;
dwY: DWORD;
dwZ: DWORD;
dwR: DWORD;
dwU: DWORD;
dwV: DWORD;
end record;
subtype JOYPOS is joypos_tag;
type LPJOYPOS is access all joypos_tag;
type joyrange_tag is record
jpMin: JOYPOS;
jpMax: JOYPOS;
jpCenter: JOYPOS;
end record;
subtype JOYRANGE is joyrange_tag;
type LPJOYRANGE is access all joyrange_tag;
type joyreguservalues_tag is record
dwTimeOut: DWORD;
jrvRanges: JOYRANGE;
jpDeadZone: JOYPOS;
end record;
subtype JOYREGUSERVALUES is joyreguservalues_tag;
type LPJOYREGUSERVALUES is access all joyreguservalues_tag;
type joyreghwsettings_tag is record
dwFlags: DWORD;
dwNumButtons: DWORD;
end record;
subtype JOYREGHWSETTINGS is joyreghwsettings_tag;
type LPJOYHWSETTINGS is access all joyreghwsettings_tag;
type joyreghwvalues_tag is record
jrvHardware: JOYRANGE;
dwPOVValues: DWORD_Array(0..JOY_POV_NUMDIRS-1);
dwCalFlags: DWORD;
end record;
subtype JOYREGHWVALUES is joyreghwvalues_tag;
type LPJOYREGHWVALUES is access all joyreghwvalues_tag;
type joyreghwconfig_tag is record
hws: JOYREGHWSETTINGS;
dwUsageSettings: DWORD;
hwv: JOYREGHWVALUES;
dwType: DWORD;
dwReserved: DWORD;
end record;
subtype JOYREGHWCONFIG is joyreghwconfig_tag;
type LPJOYREGHWCONFIG is access all joyreghwconfig_tag;
type joycalibrate_tag is record
wXbase: UINT;
wXdelta: UINT;
wYbase: UINT;
wYdelta: UINT;
wZbase: UINT;
wZdelta: UINT;
end record;
subtype JOYCALIBRATE is joycalibrate_tag;
type LPJOYCALIBRATE is access all JOYCALIBRATE;
MAX_JOYSTRING : constant := 256;
type LPDIJOYTYPECALLBACK is access function(Arg_1:LPVOID) return BOOL with Convention=>Stdcall;
MAX_JOYSTICKOEMVXDNAME : constant := 260;
DITC_REGHWSETTINGS : constant := 16#00000001#;
DITC_CLSIDCONFIG : constant := 16#00000002#;
DITC_DISPLAYNAME : constant := 16#00000004#;
DITC_CALLOUT : constant := 16#00000008#;
DITC_HARDWAREID : constant := 16#00000010#;
DITC_FLAGS1 : constant := 16#00000020#;
DITC_FLAGS2 : constant := 16#00000040#;
DITC_MAPFILE : constant := 16#00000080#;
type DIJOYTYPEINFO_DX5 is record
dwSize: DWORD;
hws: JOYREGHWSETTINGS;
clsidConfig: CLSID;
wszDisplayName: WCHAR_Array(0..MAX_JOYSTRING-1);
wszCallout: WCHAR_Array(0..MAX_JOYSTICKOEMVXDNAME-1);
end record;
type LPDIJOYTYPEINFO_DX5 is access all DIJOYTYPEINFO_DX5;
type LPCDIJOYTYPEINFO_DX5 is access constant DIJOYTYPEINFO_DX5;
type DIJOYTYPEINFO_DX6 is record
dwSize: DWORD;
hws: JOYREGHWSETTINGS;
clsidConfig: CLSID;
wszDisplayName: WCHAR_Array(0..MAX_JOYSTRING-1);
wszCallout: WCHAR_Array(0..MAX_JOYSTICKOEMVXDNAME-1);
wszHardwareId: WCHAR_Array(0..MAX_JOYSTRING-1);
dwFlags1: DWORD;
end record;
type LPDIJOYTYPEINFO_DX6 is access all DIJOYTYPEINFO_DX6;
type LPCDIJOYTYPEINFO_DX6 is access constant DIJOYTYPEINFO_DX6;
type DIJOYTYPEINFO is record
dwSize: DWORD;
hws: JOYREGHWSETTINGS;
clsidConfig: CLSID;
wszDisplayName: WCHAR_Array(0..MAX_JOYSTRING-1);
wszCallout: WCHAR_Array(0..MAX_JOYSTICKOEMVXDNAME-1);
wszHardwareId: WCHAR_Array(0..MAX_JOYSTRING-1);
dwFlags1: DWORD;
dwFlags2: DWORD;
wszMapFile: WCHAR_Array(0..MAX_JOYSTRING-1);
end record;
type LPDIJOYTYPEINFO is access all DIJOYTYPEINFO;
type LPCDIJOYTYPEINFO is access constant DIJOYTYPEINFO;
DIJC_GUIDINSTANCE : constant := 16#00000001#;
DIJC_REGHWCONFIGTYPE : constant := 16#00000002#;
DIJC_GAIN : constant := 16#00000004#;
DIJC_CALLOUT : constant := 16#00000008#;
DIJC_WDMGAMEPORT : constant := 16#00000010#;
type DIJOYCONFIG_DX5 is record
dwSize: DWORD;
guidInstance: rpcdce.GUID;
hwc: JOYREGHWCONFIG;
dwGain: DWORD;
wszType: WCHAR_Array(0..MAX_JOYSTRING-1);
wszCallout: WCHAR_Array(0..MAX_JOYSTRING-1);
end record;
type LPDIJOYCONFIG_DX5 is access all DIJOYCONFIG_DX5;
type LPCDIJOYCONFIG_DX5 is access constant DIJOYCONFIG_DX5;
type DIJOYCONFIG is record
dwSize: DWORD;
guidInstance: rpcdce.GUID;
hwc: JOYREGHWCONFIG;
dwGain: DWORD;
wszType: WCHAR_Array(0..MAX_JOYSTRING-1);
wszCallout: WCHAR_Array(0..MAX_JOYSTRING-1);
guidGameport: rpcdce.GUID;
end record;
type LPDIJOYCONFIG is access all DIJOYCONFIG;
type LPCDIJOYCONFIG is access constant DIJOYCONFIG;
DIJU_USERVALUES : constant := 16#00000001#;
DIJU_GLOBALDRIVER : constant := 16#00000002#;
DIJU_GAMEPORTEMULATOR : constant := 16#00000004#;
type DIJOYUSERVALUES is record
dwSize: DWORD;
ruv: JOYREGUSERVALUES;
wszGlobalDriver: WCHAR_Array(0..MAX_JOYSTRING-1);
wszGameportEmulator: WCHAR_Array(0..MAX_JOYSTRING-1);
end record;
type LPDIJOYUSERVALUES is access all DIJOYUSERVALUES;
type LPCDIJOYUSERVALUES is access constant DIJOYUSERVALUES;
GUID_KeyboardClass:constant win32.rpcdce.GUID:=(16#4D36E96B#,16#E325#,16#11CE#,(16#BF#,16#C1#,16#08#,16#00#,16#2B#,16#E1#,16#03#,16#18#));
GUID_MediaClass:constant win32.rpcdce.GUID:=(16#4D36E96C#,16#E325#,16#11CE#,(16#BF#,16#C1#,16#08#,16#00#,16#2B#,16#E1#,16#03#,16#18#));
GUID_MouseClass:constant win32.rpcdce.GUID:=(16#4D36E96F#,16#E325#,16#11CE#,(16#BF#,16#C1#,16#08#,16#00#,16#2B#,16#E1#,16#03#,16#18#));
GUID_HIDClass:constant win32.rpcdce.GUID:=(16#745A17A0#,16#74D3#,16#11D0#,(16#B6#,16#FE#,16#00#,16#A0#,16#C9#,16#0F#,16#57#,16#DA#));
type IDirectInputJoyConfig;
type LPIDirectInputJoyConfig is access all IDirectInputJoyConfig;
type LPLPIDirectInputJoyConfig is access all LPIDirectInputJoyConfig;
subtype LPDirectInputJoyConfig is LPIDirectInputJoyConfig;
subtype LPLPDirectInputJoyConfig is LPLPIDirectInputJoyConfig;
type IDirectInputJoyConfig is record
QueryInterface:access procedure(THIS:LPIDirectInputJoyConfig;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
AddRef:access function(THIS:LPIDirectInputJoyConfig) return ULONG with Convention=>Stdcall;
Release:access function(THIS:LPIDirectInputJoyConfig) return ULONG with Convention=>Stdcall;
Acquire:access procedure(THIS:LPIDirectInputJoyConfig) with Convention=>Stdcall;
Unacquire:access procedure(THIS:LPIDirectInputJoyConfig) with Convention=>Stdcall;
SetCooperativeLevel:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:HWND;Arg3:DWORD) with Convention=>Stdcall;
SendNotify:access procedure(THIS:LPIDirectInputJoyConfig) with Convention=>Stdcall;
EnumTypes:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPDIJOYTYPECALLBACK;Arg3:LPVOID) with Convention=>Stdcall;
GetTypeInfo:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPCWSTR;Arg3:LPDIJOYTYPEINFO;Arg4:DWORD) with Convention=>Stdcall;
SetTypeInfo:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPCWSTR;Arg3:LPCDIJOYTYPEINFO;Arg4:DWORD) with Convention=>Stdcall;
DeleteType:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPCWSTR) with Convention=>Stdcall;
GetConfig:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:UINT;Arg3:LPDIJOYCONFIG;Arg4:DWORD) with Convention=>Stdcall;
SetConfig:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:UINT;Arg3:LPCDIJOYCONFIG;Arg4:DWORD) with Convention=>Stdcall;
DeleteConfig:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:UINT) with Convention=>Stdcall;
GetUserValues:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPDIJOYUSERVALUES;Arg3:DWORD) with Convention=>Stdcall;
SetUserValues:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPCDIJOYUSERVALUES;Arg3:DWORD) with Convention=>Stdcall;
AddNewHardware:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:HWND;Arg3:REFGUID) with Convention=>Stdcall;
OpenTypeKey:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:LPCWSTR;Arg3:DWORD;Arg4:PHKEY) with Convention=>Stdcall;
OpenConfigKey:access procedure(THIS:LPIDirectInputJoyConfig;Arg2:UINT;Arg3:DWORD;Arg4:PHKEY) with Convention=>Stdcall;
end record;
type IDirectInputJoyConfig8;
type LPIDirectInputJoyConfig8 is access all IDirectInputJoyConfig8;
type LPLPIDirectInputJoyConfig8 is access all LPIDirectInputJoyConfig8;
subtype LPDirectInputJoyConfig8 is LPIDirectInputJoyConfig8;
subtype LPLPDirectInputJoyConfig8 is LPLPIDirectInputJoyConfig8;
type IDirectInputJoyConfig8 is record
QueryInterface:access procedure(THIS:LPIDirectInputJoyConfig8;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
AddRef:access function(THIS:LPIDirectInputJoyConfig8) return ULONG with Convention=>Stdcall;
Release:access function(THIS:LPIDirectInputJoyConfig8) return ULONG with Convention=>Stdcall;
Acquire:access procedure(THIS:LPIDirectInputJoyConfig8) with Convention=>Stdcall;
Unacquire:access procedure(THIS:LPIDirectInputJoyConfig8) with Convention=>Stdcall;
SetCooperativeLevel:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:HWND;Arg3:DWORD) with Convention=>Stdcall;
SendNotify:access procedure(THIS:LPIDirectInputJoyConfig8) with Convention=>Stdcall;
EnumTypes:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPDIJOYTYPECALLBACK;Arg3:LPVOID) with Convention=>Stdcall;
GetTypeInfo:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPCWSTR;Arg3:LPDIJOYTYPEINFO;Arg4:DWORD) with Convention=>Stdcall;
SetTypeInfo:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPCWSTR;Arg3:LPCDIJOYTYPEINFO;Arg4:DWORD;Arg5:LPWSTR) with Convention=>Stdcall;
DeleteType:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPCWSTR) with Convention=>Stdcall;
GetConfig:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:UINT;Arg3:LPDIJOYCONFIG;Arg4:DWORD) with Convention=>Stdcall;
SetConfig:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:UINT;Arg3:LPCDIJOYCONFIG;Arg4:DWORD) with Convention=>Stdcall;
DeleteConfig:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:UINT) with Convention=>Stdcall;
GetUserValues:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPDIJOYUSERVALUES;Arg3:DWORD) with Convention=>Stdcall;
SetUserValues:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPCDIJOYUSERVALUES;Arg3:DWORD) with Convention=>Stdcall;
AddNewHardware:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:HWND;Arg3:REFGUID) with Convention=>Stdcall;
OpenTypeKey:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:LPCWSTR;Arg3:DWORD;Arg4:PHKEY) with Convention=>Stdcall;
OpenAppStatusKey:access procedure(THIS:LPIDirectInputJoyConfig8;Arg2:PHKEY) with Convention=>Stdcall;
end record;
Nul:constant Character:=Character'First;
DIRECTINPUT_NOTIFICATION_MSGSTRINGA : constant String:= "DIRECTINPUT_NOTIFICATION_MSGSTRING"&Nul;
DIRECTINPUT_NOTIFICATION_MSGSTRINGW : constant Wide_String:= To_Wide_String("DIRECTINPUT_NOTIFICATION_MSGSTRING"&Nul);
DIRECTINPUT_NOTIFICATION_MSGSTRING : constant String:= DIRECTINPUT_NOTIFICATION_MSGSTRINGA;
DIMSGWP_NEWAPPSTART : constant := 16#00000001#;
DIMSGWP_DX8APPSTART : constant := 16#00000002#;
DIMSGWP_DX8MAPPERAPPSTART : constant := 16#00000003#;
DIAPPIDFLAG_NOTIME : constant := 16#00000001#;
DIAPPIDFLAG_NOSIZE : constant := 16#00000002#;
DIRECTINPUT_REGSTR_VAL_APPIDFLAGA : constant String:= "AppIdFlag"&Nul;
DIRECTINPUT_REGSTR_KEY_LASTAPPA : constant String:= "MostRecentApplication"&Nul;
DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA : constant String:= "MostRecentMapperApplication"&Nul;
DIRECTINPUT_REGSTR_VAL_VERSIONA : constant String:= "Version"&Nul;
DIRECTINPUT_REGSTR_VAL_NAMEA : constant String:= "Name"&Nul;
DIRECTINPUT_REGSTR_VAL_IDA : constant String:= "Id"&Nul;
DIRECTINPUT_REGSTR_VAL_MAPPERA : constant String:= "UsesMapper"&Nul;
DIRECTINPUT_REGSTR_VAL_LASTSTARTA : constant String:= "MostRecentStart"&Nul;
DIRECTINPUT_REGSTR_VAL_APPIDFLAGW : constant Wide_String:= To_Wide_String("AppIdFlag"&Nul);
DIRECTINPUT_REGSTR_KEY_LASTAPPW : constant Wide_String:= To_Wide_String("MostRecentApplication"&Nul);
DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW : constant Wide_String:= To_Wide_String("MostRecentMapperApplication"&Nul);
DIRECTINPUT_REGSTR_VAL_VERSIONW : constant Wide_String:= To_Wide_String("Version"&Nul);
DIRECTINPUT_REGSTR_VAL_NAMEW : constant Wide_String:= To_Wide_String("Name"&Nul);
DIRECTINPUT_REGSTR_VAL_IDW : constant Wide_String:= To_Wide_String("Id"&Nul);
DIRECTINPUT_REGSTR_VAL_MAPPERW : constant Wide_String:= To_Wide_String("UsesMapper"&Nul);
DIRECTINPUT_REGSTR_VAL_LASTSTARTW : constant Wide_String:= To_Wide_String("MostRecentStart"&Nul);
-- DIRECTINPUT_REGSTR_VAL_APPIDFLAG : constant := DIRECTINPUT_REGSTR_VAL_APPIDFLAGW;
--
-- DIRECTINPUT_REGSTR_KEY_LASTAPP : constant := DIRECTINPUT_REGSTR_KEY_LASTAPPW;
--
-- DIRECTINPUT_REGSTR_KEY_LASTMAPAPP : constant := DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW;
--
-- DIRECTINPUT_REGSTR_VAL_VERSION : constant := DIRECTINPUT_REGSTR_VAL_VERSIONW;
--
-- DIRECTINPUT_REGSTR_VAL_NAME : constant := DIRECTINPUT_REGSTR_VAL_NAMEW;
--
-- DIRECTINPUT_REGSTR_VAL_ID : constant := DIRECTINPUT_REGSTR_VAL_IDW;
--
-- DIRECTINPUT_REGSTR_VAL_MAPPER : constant := DIRECTINPUT_REGSTR_VAL_MAPPERW;
--
-- DIRECTINPUT_REGSTR_VAL_LASTSTART : constant := DIRECTINPUT_REGSTR_VAL_LASTSTARTW;
DIRECTINPUT_REGSTR_VAL_APPIDFLAG : constant String:= DIRECTINPUT_REGSTR_VAL_APPIDFLAGA;
DIRECTINPUT_REGSTR_KEY_LASTAPP : constant String:= DIRECTINPUT_REGSTR_KEY_LASTAPPA;
DIRECTINPUT_REGSTR_KEY_LASTMAPAPP : constant String:= DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA;
DIRECTINPUT_REGSTR_VAL_VERSION : constant String:= DIRECTINPUT_REGSTR_VAL_VERSIONA;
DIRECTINPUT_REGSTR_VAL_NAME : constant String:= DIRECTINPUT_REGSTR_VAL_NAMEA;
DIRECTINPUT_REGSTR_VAL_ID : constant String:= DIRECTINPUT_REGSTR_VAL_IDA;
DIRECTINPUT_REGSTR_VAL_MAPPER : constant String:= DIRECTINPUT_REGSTR_VAL_MAPPERA;
DIRECTINPUT_REGSTR_VAL_LASTSTART : constant String:= DIRECTINPUT_REGSTR_VAL_LASTSTARTA;
DIERR_DRIVERFIRST : constant := 16#80040300#;
DIERR_DRIVERLAST : constant := 16#800403FF#;
DIERR_INVALIDCLASSINSTALLER : constant := 16#80040400#;
DIERR_CANCELLED : constant := 16#80040401#;
DIERR_BADINF : constant := 16#80040402#;
DIDIFT_DELETE : constant := 16#01000000#;
end dinputd;