9 struct IDirectInputDevice8A;
10 struct IDirectInputEffect;
15 enum DIK : std::uint32_t
182 struct DIOBJECTDATAFORMAT;
431 struct __declspec(novtable, uuid("BF798030-483A-4DA2-AA99-5D64ED369700"))
432 IDirectInput8A :
public IUnknown
434 virtual HRESULT CreateDevice(
const GUID&, IDirectInputDevice8A**, IUnknown*) noexcept = 0;
436 virtual HRESULT GetDeviceStatus(
const GUID&) noexcept = 0;
437 virtual HRESULT RunControlPanel(
HWND, std::uint32_t) noexcept = 0;
439 virtual HRESULT FindDevice(
const GUID&,
const char*, GUID*) noexcept = 0;
444 struct __declspec(novtable, uuid("54D41080-DC15-4833-A41B-748F73A38179"))
445 IDirectInputDevice8A :
public IUnknown
447 virtual HRESULT GetCapabilities(DIDEVCAPS*) noexcept = 0;
449 virtual HRESULT GetProperty(
const GUID&, DIPROPHEADER*) noexcept = 0;
450 virtual HRESULT SetProperty(
const GUID&,
const DIPROPHEADER*) noexcept = 0;
451 virtual HRESULT Acquire() noexcept = 0;
452 virtual
HRESULT Unacquire() noexcept = 0;
453 virtual
HRESULT GetDeviceState(
std::uint32_t,
void*) noexcept = 0;
454 virtual
HRESULT GetDeviceData(
std::uint32_t, DIDEVICEOBJECTDATA*,
std::uint32_t*,
std::uint32_t) noexcept = 0;
455 virtual
HRESULT SetDataFormat(const DIDATAFORMAT*) noexcept = 0;
457 virtual
HRESULT SetCooperativeLevel(
HWND,
std::uint32_t) noexcept = 0;
458 virtual
HRESULT GetObjectInfo(DIDEVICEOBJECTINSTANCEA*,
std::uint32_t,
std::uint32_t) noexcept = 0;
459 virtual
HRESULT GetDeviceInfo(DIDEVICEINSTANCEA*) noexcept = 0;
460 virtual
HRESULT RunControlPanel(
HWND,
std::uint32_t) noexcept = 0;
462 virtual
HRESULT CreateEffect(const GUID&, const DIEFFECT*, IDirectInputEffect*, IUnknown*) noexcept = 0;
464 virtual
HRESULT GetEffectInfo(DIEFFECTINFOA*, const GUID&) noexcept = 0;
465 virtual
HRESULT GetForceFeedbackState(
std::uint32_t*) noexcept = 0;
466 virtual
HRESULT SendForceFeedbackCommand(
std::uint32_t) noexcept = 0;
468 virtual
HRESULT Escape(DIEFFESCAPE*) noexcept = 0;
469 virtual
HRESULT Poll() noexcept = 0;
470 virtual
HRESULT SendDeviceData(
std::uint32_t, const DIDEVICEOBJECTDATA*,
std::uint32_t*,
std::uint32_t) noexcept = 0;
472 virtual
HRESULT WriteEffectToFile(const
char*,
std::uint32_t, DIFILEEFFECT*,
std::uint32_t) noexcept = 0;
473 virtual
HRESULT BuildActionMap(DIACTIONFORMATA*, const
char*,
std::uint32_t) noexcept = 0;
474 virtual
HRESULT SetActionMap(DIACTIONFORMATA*, const
char*,
std::uint32_t) noexcept = 0;
475 virtual
HRESULT GetImageInfo(DIDEVICEIMAGEINFOHEADERA*) noexcept = 0;
478 struct
__declspec(novtable, uuid("E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35"))
479 IDirectInputEffect : public IUnknown
481 virtual HRESULT Initialize(
HINSTANCE, std::uint32_t,
const GUID&) noexcept = 0;
482 virtual HRESULT GetEffectGuid(GUID*) noexcept = 0;
483 virtual HRESULT GetParameters(DIEFFECT*, std::uint32_t) noexcept = 0;
484 virtual HRESULT SetParameters(
const DIEFFECT*, std::uint32_t) noexcept = 0;
485 virtual HRESULT Start(std::uint32_t, std::uint32_t) noexcept = 0;
487 virtual
HRESULT GetEffectStatus(
std::uint32_t*) noexcept = 0;
488 virtual
HRESULT Download() noexcept = 0;
489 virtual
HRESULT Unload() noexcept = 0;
490 virtual
HRESULT Escape(DIEFFESCAPE*) noexcept = 0;
496 inline constexpr
IID IID_IDirectInput8A{ 0xBF798030, 0x483A, 0x4DA2, { 0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00 } };
497 inline constexpr
IID IID_IDirectInputDevice8A{ 0x54D41080, 0xDC15, 0x4833, { 0xA4, 0x1B, 0x74, 0x8F, 0x73, 0xA3, 0x81, 0x79 } };
498 inline constexpr
IID IID_IDirectInputEffect{ 0xE7E1F7C0, 0x88D2, 0x11D0, { 0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35 } };
Definition: BSDirectInputManager.h:8
std::uint32_t D3DCOLOR
Definition: D3D.h:673
BOOL(__stdcall *)(const DIDEVICEINSTANCEA *, IDirectInputDevice8A *, std::uint32_t, std::uint32_t, void *) LPDIENUMDEVICESBYSEMANTICSCBA
Definition: DINPUT.h:422
BOOL(__stdcall *)(const DIDEVICEOBJECTINSTANCEA *, void *) LPDIENUMDEVICEOBJECTSCALLBACKA
Definition: DINPUT.h:424
BOOL(__stdcall *)(const DIEFFECTINFOA *, void *) LPDIENUMEFFECTSCALLBACKA
Definition: DINPUT.h:425
void * HANDLE
Definition: BASE.h:14
constexpr IID IID_IDirectInputDevice8A
Definition: DINPUT.h:497
struct __declspec(novtable, uuid("00000000-0000-0000-c000-000000000046")) IUnknown
Definition: COM.h:7
std::int32_t BOOL
Definition: BASE.h:13
constexpr IID IID_IDirectInput8A
Definition: DINPUT.h:496
constexpr auto MAX_PATH
Definition: BASE.h:34
BOOL(__stdcall *)(IDirectInputEffect *, void *) LPDIENUMCREATEDEFFECTOBJECTSCALLBACK
Definition: DINPUT.h:421
constexpr IID IID_IDirectInputEffect
Definition: DINPUT.h:498
BOOL(__stdcall *)(const DIFILEEFFECT *, void *) LPDIENUMEFFECTSINFILECALLBACK
Definition: DINPUT.h:426
BOOL(__stdcall *)(IUnknown *, void *) LPDICONFIGUREDEVICESCALLBACK
Definition: DINPUT.h:420
DIK
Definition: DINPUT.h:16
@ DIK_NUMPAD0
Definition: DINPUT.h:98
@ DIK_LBRACKET
Definition: DINPUT.h:42
@ DIK_B
Definition: DINPUT.h:64
@ DIK_ABNT_C1
Definition: DINPUT.h:107
@ DIK_POWER
Definition: DINPUT.h:149
@ DIK_PRIOR
Definition: DINPUT.h:138
@ DIK_RBRACKET
Definition: DINPUT.h:43
@ DIK_WEBHOME
Definition: DINPUT.h:130
@ DIK_AX
Definition: DINPUT.h:119
@ DIK_HOME
Definition: DINPUT.h:136
@ DIK_NUMPAD6
Definition: DINPUT.h:93
@ DIK_J
Definition: DINPUT.h:52
@ DIK_F
Definition: DINPUT.h:49
@ DIK_NUMPADSTAR
Definition: DINPUT.h:162
@ DIK_RCONTROL
Definition: DINPUT.h:123
@ DIK_WEBBACK
Definition: DINPUT.h:157
@ DIK_GRAVE
Definition: DINPUT.h:57
@ DIK_PERIOD
Definition: DINPUT.h:68
@ DIK_A
Definition: DINPUT.h:46
@ DIK_NUMPAD2
Definition: DINPUT.h:96
@ DIK_DECIMAL
Definition: DINPUT.h:99
@ DIK_RIGHT
Definition: DINPUT.h:140
@ DIK_8
Definition: DINPUT.h:25
@ DIK_F5
Definition: DINPUT.h:79
@ DIK_SUBTRACT
Definition: DINPUT.h:90
@ DIK_VOLUMEUP
Definition: DINPUT.h:129
@ DIK_WAKE
Definition: DINPUT.h:151
@ DIK_F7
Definition: DINPUT.h:81
@ DIK_END
Definition: DINPUT.h:141
@ DIK_SLEEP
Definition: DINPUT.h:150
@ DIK_COMMA
Definition: DINPUT.h:67
@ DIK_RETURN
Definition: DINPUT.h:44
@ DIK_UP
Definition: DINPUT.h:137
@ DIK_DIVIDE
Definition: DINPUT.h:132
@ DIK_CAPITAL
Definition: DINPUT.h:74
@ DIK_SYSRQ
Definition: DINPUT.h:133
@ DIK_W
Definition: DINPUT.h:33
@ DIK_SLASH
Definition: DINPUT.h:69
@ DIK_NUMPADEQUALS
Definition: DINPUT.h:112
@ DIK_F11
Definition: DINPUT.h:101
@ DIK_KANA
Definition: DINPUT.h:106
@ DIK_ABNT_C2
Definition: DINPUT.h:111
@ DIK_PAUSE
Definition: DINPUT.h:135
@ DIK_5
Definition: DINPUT.h:22
@ DIK_COLON
Definition: DINPUT.h:115
@ DIK_NUMPADENTER
Definition: DINPUT.h:122
@ DIK_NUMPADSLASH
Definition: DINPUT.h:168
@ DIK_LMENU
Definition: DINPUT.h:72
@ DIK_2
Definition: DINPUT.h:19
@ DIK_ESCAPE
Definition: DINPUT.h:17
@ DIK_EQUALS
Definition: DINPUT.h:29
@ DIK_PREVTRACK
Definition: DINPUT.h:113
@ DIK_LCONTROL
Definition: DINPUT.h:45
@ DIK_BACKSLASH
Definition: DINPUT.h:59
@ DIK_UNLABELED
Definition: DINPUT.h:120
@ DIK_3
Definition: DINPUT.h:20
@ DIK_NEXT
Definition: DINPUT.h:143
@ DIK_LSHIFT
Definition: DINPUT.h:58
@ DIK_LEFT
Definition: DINPUT.h:139
@ DIK_NUMPADPERIOD
Definition: DINPUT.h:167
@ DIK_MULTIPLY
Definition: DINPUT.h:71
@ DIK_PLAYPAUSE
Definition: DINPUT.h:126
@ DIK_V
Definition: DINPUT.h:63
@ DIK_NUMLOCK
Definition: DINPUT.h:85
@ DIK_RWIN
Definition: DINPUT.h:147
@ DIK_LEFTARROW
Definition: DINPUT.h:172
@ DIK_F6
Definition: DINPUT.h:80
@ DIK_CALCULATOR
Definition: DINPUT.h:125
@ DIK_NUMPAD8
Definition: DINPUT.h:88
@ DIK_E
Definition: DINPUT.h:34
@ DIK_YEN
Definition: DINPUT.h:110
@ DIK_F4
Definition: DINPUT.h:78
@ DIK_F8
Definition: DINPUT.h:82
@ DIK_PGDN
Definition: DINPUT.h:175
@ DIK_F15
Definition: DINPUT.h:105
@ DIK_NUMPADMINUS
Definition: DINPUT.h:165
@ DIK_X
Definition: DINPUT.h:61
@ DIK_F12
Definition: DINPUT.h:102
@ DIK_RIGHTARROW
Definition: DINPUT.h:173
@ DIK_CONVERT
Definition: DINPUT.h:108
@ DIK_R
Definition: DINPUT.h:35
@ DIK_CAPSLOCK
Definition: DINPUT.h:164
@ DIK_NUMPAD5
Definition: DINPUT.h:92
@ DIK_F9
Definition: DINPUT.h:83
@ DIK_Q
Definition: DINPUT.h:32
@ DIK_MEDIASELECT
Definition: DINPUT.h:160
@ DIK_MEDIASTOP
Definition: DINPUT.h:127
@ DIK_MYCOMPUTER
Definition: DINPUT.h:158
@ DIK_APPS
Definition: DINPUT.h:148
@ DIK_NUMPAD9
Definition: DINPUT.h:89
@ DIK_K
Definition: DINPUT.h:53
@ DIK_N
Definition: DINPUT.h:65
@ DIK_L
Definition: DINPUT.h:54
@ DIK_RSHIFT
Definition: DINPUT.h:70
@ DIK_MUTE
Definition: DINPUT.h:124
@ DIK_DELETE
Definition: DINPUT.h:145
@ DIK_INSERT
Definition: DINPUT.h:144
@ DIK_F2
Definition: DINPUT.h:76
@ DIK_WEBSTOP
Definition: DINPUT.h:155
@ DIK_WEBFORWARD
Definition: DINPUT.h:156
@ DIK_M
Definition: DINPUT.h:66
@ DIK_KANJI
Definition: DINPUT.h:117
@ DIK_LWIN
Definition: DINPUT.h:146
@ DIK_F10
Definition: DINPUT.h:84
@ DIK_DOWN
Definition: DINPUT.h:142
@ DIK_BACKSPACE
Definition: DINPUT.h:161
@ DIK_T
Definition: DINPUT.h:36
@ DIK_F1
Definition: DINPUT.h:75
@ DIK_STOP
Definition: DINPUT.h:118
@ DIK_NUMPAD1
Definition: DINPUT.h:95
@ DIK_O
Definition: DINPUT.h:40
@ DIK_UPARROW
Definition: DINPUT.h:170
@ DIK_SPACE
Definition: DINPUT.h:73
@ DIK_G
Definition: DINPUT.h:50
@ DIK_C
Definition: DINPUT.h:62
@ DIK_MAIL
Definition: DINPUT.h:159
@ DIK_F14
Definition: DINPUT.h:104
@ DIK_NUMPADPLUS
Definition: DINPUT.h:166
@ DIK_WEBFAVORITES
Definition: DINPUT.h:153
@ DIK_RMENU
Definition: DINPUT.h:134
@ DIK_AT
Definition: DINPUT.h:114
@ DIK_0
Definition: DINPUT.h:27
@ DIK_I
Definition: DINPUT.h:39
@ DIK_NOCONVERT
Definition: DINPUT.h:109
@ DIK_RALT
Definition: DINPUT.h:169
@ DIK_NEXTTRACK
Definition: DINPUT.h:121
@ DIK_F3
Definition: DINPUT.h:77
@ DIK_4
Definition: DINPUT.h:21
@ DIK_U
Definition: DINPUT.h:38
@ DIK_ADD
Definition: DINPUT.h:94
@ DIK_NUMPAD4
Definition: DINPUT.h:91
@ DIK_S
Definition: DINPUT.h:47
@ DIK_UNDERLINE
Definition: DINPUT.h:116
@ DIK_6
Definition: DINPUT.h:23
@ DIK_F13
Definition: DINPUT.h:103
@ DIK_PGUP
Definition: DINPUT.h:171
@ DIK_NUMPAD3
Definition: DINPUT.h:97
@ DIK_H
Definition: DINPUT.h:51
@ DIK_DOWNARROW
Definition: DINPUT.h:174
@ DIK_Y
Definition: DINPUT.h:37
@ DIK_LALT
Definition: DINPUT.h:163
@ DIK_WEBSEARCH
Definition: DINPUT.h:152
@ DIK_BACK
Definition: DINPUT.h:30
@ DIK_NUMPAD7
Definition: DINPUT.h:87
@ DIK_7
Definition: DINPUT.h:24
@ DIK_TAB
Definition: DINPUT.h:31
@ DIK_APOSTROPHE
Definition: DINPUT.h:56
@ DIK_SEMICOLON
Definition: DINPUT.h:55
@ DIK_9
Definition: DINPUT.h:26
@ DIK_OEM_102
Definition: DINPUT.h:100
@ DIK_D
Definition: DINPUT.h:48
@ DIK_VOLUMEDOWN
Definition: DINPUT.h:128
@ DIK_SCROLL
Definition: DINPUT.h:86
@ DIK_NUMPADCOMMA
Definition: DINPUT.h:131
@ DIK_P
Definition: DINPUT.h:41
@ DIK_WEBREFRESH
Definition: DINPUT.h:154
@ DIK_MINUS
Definition: DINPUT.h:28
@ DIK_Z
Definition: DINPUT.h:60
@ DIK_1
Definition: DINPUT.h:18
struct HWND__ * HWND
Definition: BASE.h:30
std::int32_t HRESULT
Definition: BASE.h:28
struct HINSTANCE__ * HINSTANCE
Definition: BASE.h:21
BOOL(__stdcall *)(const DIDEVICEINSTANCEA *, void *) LPDIENUMDEVICESCALLBACKA
Definition: DINPUT.h:423
Definition: BSDirectInputManager.h:8
constexpr REL::ID Stop(static_cast< std::uint64_t >(66358))
constexpr REL::ID Start(static_cast< std::uint64_t >(33961))
Definition: EffectArchetypes.h:65
std::uint32_t resIdString
Definition: DINPUT.h:192
std::uint32_t objID
Definition: DINPUT.h:195
const char * actionName
Definition: DINPUT.h:191
std::uint32_t how
Definition: DINPUT.h:196
std::uintptr_t appData
Definition: DINPUT.h:186
std::uint32_t semantic
Definition: DINPUT.h:187
GUID guidInstance
Definition: DINPUT.h:194
std::uint32_t flags
Definition: DINPUT.h:188
D3DCOLOR calloutLine
Definition: DINPUT.h:222
std::uint32_t size
Definition: DINPUT.h:219
D3DCOLOR highlightFill
Definition: DINPUT.h:226
D3DCOLOR areaFill
Definition: DINPUT.h:227
D3DCOLOR textFore
Definition: DINPUT.h:220
D3DCOLOR calloutHighlight
Definition: DINPUT.h:223
D3DCOLOR textHighlight
Definition: DINPUT.h:221
D3DCOLOR border
Definition: DINPUT.h:224
D3DCOLOR controlFill
Definition: DINPUT.h:225
std::uint32_t axes
Definition: DINPUT.h:257
std::uint32_t hardwareRevision
Definition: DINPUT.h:263
std::uint32_t buttons
Definition: DINPUT.h:258
std::uint32_t firmwareRevision
Definition: DINPUT.h:262
std::uint32_t ffMinTimeResolution
Definition: DINPUT.h:261
std::uint32_t ffSamplePeriod
Definition: DINPUT.h:260
std::uint32_t devType
Definition: DINPUT.h:256
std::uint32_t flags
Definition: DINPUT.h:255
std::uint32_t povs
Definition: DINPUT.h:259
std::uint32_t ffDriverVersion
Definition: DINPUT.h:264
std::uint32_t size
Definition: DINPUT.h:254
POINT calloutLine[5]
Definition: DINPUT.h:275
std::uint32_t textAlign
Definition: DINPUT.h:277
std::uint32_t flags
Definition: DINPUT.h:270
std::uint32_t validPts
Definition: DINPUT.h:274
char imagePath[MAX_PATH]
Definition: DINPUT.h:269
RECT calloutRect
Definition: DINPUT.h:276
RECT overlay
Definition: DINPUT.h:272
std::uint32_t objID
Definition: DINPUT.h:273
std::uint32_t viewID
Definition: DINPUT.h:271
std::uint16_t usage
Definition: DINPUT.h:305
std::uint32_t size
Definition: DINPUT.h:295
GUID guidFFDriver
Definition: DINPUT.h:301
char instanceName[MAX_PATH]
Definition: DINPUT.h:299
std::uint32_t devType
Definition: DINPUT.h:298
std::uint16_t usagePage
Definition: DINPUT.h:304
GUID guidProduct
Definition: DINPUT.h:297
char productName[MAX_PATH]
Definition: DINPUT.h:300
GUID guidInstance
Definition: DINPUT.h:296
std::uint32_t sequence
Definition: DINPUT.h:313
std::uint32_t data
Definition: DINPUT.h:311
std::uint32_t ofs
Definition: DINPUT.h:310
std::uintptr_t appData
Definition: DINPUT.h:314
std::uint32_t timeStamp
Definition: DINPUT.h:312
std::uint32_t flags
Definition: DINPUT.h:323
GUID guidType
Definition: DINPUT.h:320
std::uint16_t usage
Definition: DINPUT.h:332
std::uint16_t designatorIndex
Definition: DINPUT.h:330
std::uint16_t exponent
Definition: DINPUT.h:334
std::uint32_t ffMaxForce
Definition: DINPUT.h:327
std::uint16_t usagePage
Definition: DINPUT.h:331
std::uint32_t type
Definition: DINPUT.h:322
std::uint32_t ffForceResolution
Definition: DINPUT.h:328
std::uint16_t collectionNumber
Definition: DINPUT.h:329
std::uint16_t reportId
Definition: DINPUT.h:335
std::uint32_t dimension
Definition: DINPUT.h:333
std::uint32_t size
Definition: DINPUT.h:319
std::uint32_t ofs
Definition: DINPUT.h:321
char name[MAX_PATH]
Definition: DINPUT.h:324
std::uint32_t effectType
Definition: DINPUT.h:369
std::uint32_t staticParams
Definition: DINPUT.h:370
char name[MAX_PATH]
Definition: DINPUT.h:372
GUID guid
Definition: DINPUT.h:368
std::uint32_t dynamicParams
Definition: DINPUT.h:371
std::uint32_t size
Definition: DINPUT.h:367
DIENVELOPE * envelope
Definition: DINPUT.h:350
std::uint32_t size
Definition: DINPUT.h:340
std::int32_t * direction
Definition: DINPUT.h:349
std::uint32_t gain
Definition: DINPUT.h:344
std::uint32_t axesSize
Definition: DINPUT.h:347
std::uint32_t duration
Definition: DINPUT.h:342
void * typeSpecificParams
Definition: DINPUT.h:352
std::uint32_t samplePeriod
Definition: DINPUT.h:343
std::uint32_t triggerRepeatInterval
Definition: DINPUT.h:346
std::uint32_t * axes
Definition: DINPUT.h:348
std::uint32_t typeSpecificParamsSize
Definition: DINPUT.h:351
std::uint32_t triggerButton
Definition: DINPUT.h:345
std::uint32_t flags
Definition: DINPUT.h:341
std::uint32_t startDelay
Definition: DINPUT.h:353
std::uint32_t inBufferSize
Definition: DINPUT.h:380
void * inBuffer
Definition: DINPUT.h:379
std::uint32_t outBufferSize
Definition: DINPUT.h:382
std::uint32_t command
Definition: DINPUT.h:378
std::uint32_t size
Definition: DINPUT.h:377
void * outBuffer
Definition: DINPUT.h:381
std::uint32_t fadeTime
Definition: DINPUT.h:362
std::uint32_t fadeLevel
Definition: DINPUT.h:361
std::uint32_t size
Definition: DINPUT.h:358
std::uint32_t attackLevel
Definition: DINPUT.h:359
std::uint32_t attackTime
Definition: DINPUT.h:360
GUID guidEffect
Definition: DINPUT.h:388
std::uint32_t size
Definition: DINPUT.h:387
char friendlyName[MAX_PATH]
Definition: DINPUT.h:390
const DIEFFECT * effect
Definition: DINPUT.h:389
std::int32_t z
Definition: DINPUT.h:397
std::uint8_t rgbButtons[8]
Definition: DINPUT.h:398
std::int32_t x
Definition: DINPUT.h:395
std::int32_t y
Definition: DINPUT.h:396