Ada计算机图形DirectX之dinputd

----------------------------------------
-- File : dinputd.ads                 --
-- Translator:Dongfeng.Gu,2018/10/29  --
-- Mail: [email protected]                --
-- 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;















猜你喜欢

转载自blog.csdn.net/adacore/article/details/83501931
今日推荐