|
|
/***************************************************************************
* * Copyright (C) 1997 Microsoft Corporation. All Rights Reserved. * * File: diextdll.h * Content: DirectInput internal include file for external DLL access * ***************************************************************************/
#ifndef _DIEXTDLL_H
#define _DIEXTDLL_H
/*****************************************************************************
* * diextdll.c - Imports from optional external DLLs * * It is very important that HidD_GetHidGuid be the very last one. * *****************************************************************************/
#ifdef STATIC_DLLUSAGE
#define ExtDll_Init()
#else
void EXTERNAL ExtDll_Init(void); #endif
void EXTERNAL ExtDll_Term(void);
/*****************************************************************************
* * @doc INTERNAL * * @struct MANUALIMPORT | * * Records a single manual import. If it hasn't * yet been resolved, then the <e MANUALIMPORT.ptsz> * points to the procedure name. If it has been resolved * successfully, then <e MANUALIMPORT.pfn> points to * the resolved address. If it has not been resolved * successfully, then <e MANUALIMPORT.pfn> is garbage. * * @field LPCSTR | psz | * * Procdure name. Note that this is always an ANSI string. * * @field FARPROC | pfn | * * Procedure address. * *****************************************************************************/
typedef struct MANUALIMPORT { FARPROC pfn; /* Procedure address */ } MANUALIMPORT, *PMANUALIMPORT;
#ifndef STATIC_DLLUSAGE
#ifndef WINNT
/*****************************************************************************
* * CFGMGR32 * * Note that this must match the CFGMGR32 section in diextdll.c * *****************************************************************************/
typedef union CFGMGR32 {
MANUALIMPORT rgmi[6]; /* number of functions we import */
struct { CONFIGRET ( WINAPI * _CM_Get_Child) ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_Sibling) ( OUT PDEVINST pdnDevInst, IN DEVINST DevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_Parent) ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_DevNode_Registry_Property) ( IN DEVINST dnDevInst, IN ULONG ulProperty, OUT PULONG pulRegDataType, OPTIONAL OUT PVOID Buffer, OPTIONAL IN OUT PULONG pulLength, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Set_DevNode_Registry_Property) ( IN DEVINST dnDevInst, IN ULONG ulProperty, IN PVOID Buffer, OPTIONAL IN ULONG ulLength, IN ULONG ulFlags ); CONFIGRET( WINAPI * _CM_Get_Device_ID) ( IN DEVINST dnDevInst, OUT PTCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags );
};
} CFGMGR32, *PFGMGR32;
extern CFGMGR32 g_cfgmgr32;
#undef CM_Get_Child
#undef CM_Get_Sibling
#undef CM_Get_Parent
#undef CM_Get_DevNode_Registry_Property
#undef CM_Set_DevNode_Registry_Property
#undef CM_Get_Device_ID
#define CM_Get_Child \
g_cfgmgr32._CM_Get_Child
#define CM_Get_Sibling \
g_cfgmgr32._CM_Get_Sibling
#define CM_Get_Parent \
g_cfgmgr32._CM_Get_Parent
#define CM_Get_DevNode_Registry_Property \
g_cfgmgr32._CM_Get_DevNode_Registry_Property
#define CM_Set_DevNode_Registry_Property \
g_cfgmgr32._CM_Set_DevNode_Registry_Property #define CM_Get_Device_ID \
g_cfgmgr32._CM_Get_Device_ID #endif //#ifndef WINNT
/*****************************************************************************
* * SETUPAPI * * Note that this must match the SETUPAPI section in diextdll.c * *****************************************************************************/
typedef union SETUPAPI {
#ifdef WINNT
MANUALIMPORT rgmi[18]; /* number of functions we import */ #else
MANUALIMPORT rgmi[12]; /* number of functions we import */ #endif
struct {
HDEVINFO (WINAPI *_SetupDiGetClassDevs) ( IN LPGUID ClassGuid, OPTIONAL IN LPCTSTR Enumerator, OPTIONAL IN HWND hwndParent, OPTIONAL IN DWORD Flags );
BOOL (WINAPI *_SetupDiDestroyDeviceInfoList) ( IN HDEVINFO DeviceInfoSet );
BOOL (WINAPI *_SetupDiGetDeviceInterfaceDetail) ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVICE_INTERFACE_DATA pdid, OUT PSP_DEVICE_INTERFACE_DETAIL_DATA pdidd, OPTIONAL IN DWORD cbDidd, OUT PDWORD RequiredSize, OPTIONAL OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
BOOL (WINAPI *_SetupDiEnumDeviceInterfaces) ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL IN LPGUID InterfaceClassGuid, IN DWORD MemberIndex, OUT PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData );
HKEY (WINAPI *_SetupDiCreateDeviceInterfaceRegKey) ( IN HDEVINFO hdev, IN PSP_DEVICE_INTERFACE_DATA pdid, IN DWORD Reserved, IN REGSAM samDesired, IN HINF InfHandle, OPTIONAL IN PCSTR InfSectionName OPTIONAL );
BOOL (WINAPI *_SetupDiCallClassInstaller) ( IN DI_FUNCTION InstallFunction, IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
BOOL (WINAPI *_SetupDiGetDeviceRegistryProperty) ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Property, OUT PDWORD PropertyRegDataType, OPTIONAL OUT PBYTE PropertyBuffer, IN DWORD PropertyBufferSize, OUT PDWORD RequiredSize OPTIONAL );
BOOL (WINAPI *_SetupDiSetDeviceRegistryProperty) ( IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Property, IN CONST BYTE* PropertyBuffer, IN DWORD PropertyBufferSize );
BOOL (WINAPI *_SetupDiGetDeviceInstanceId) ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT PTSTR DeviceInstanceId, IN DWORD DeviceInstanceIdSize, OUT PDWORD RequiredSize OPTIONAL );
BOOL (WINAPI *_SetupDiOpenDeviceInfo) ( IN HDEVINFO DeviceInfoSet, IN LPCTSTR DeviceInstanceId, IN HWND hwndParent, OPTIONAL IN DWORD OpenFlags, OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
HDEVINFO (WINAPI *_SetupDiCreateDeviceInfoList) ( IN LPGUID ClassGuid, OPTIONAL IN HWND hwndParent OPTIONAL );
HKEY (WINAPI *_SetupDiOpenDevRegKey) ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Scope, IN DWORD HwProfile, IN DWORD KeyType, IN REGSAM samDesired ); #ifdef WINNT
CONFIGRET ( WINAPI * _CM_Get_Child) ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_Sibling) ( OUT PDEVINST pdnDevInst, IN DEVINST DevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_Parent) ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Get_DevNode_Registry_Property) ( IN DEVINST dnDevInst, IN ULONG ulProperty, OUT PULONG pulRegDataType, OPTIONAL OUT PVOID Buffer, OPTIONAL IN OUT PULONG pulLength, IN ULONG ulFlags );
CONFIGRET ( WINAPI * _CM_Set_DevNode_Registry_Property) ( IN DEVINST dnDevInst, IN ULONG ulProperty, IN PVOID Buffer, OPTIONAL IN ULONG ulLength, IN ULONG ulFlags ); CONFIGRET( WINAPI * _CM_Get_Device_ID) ( IN DEVINST dnDevInst, OUT PTCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags ); #endif
}; } SETUPAPI, *PSETUPAPI;
extern SETUPAPI g_setupapi;
#undef SetupDiGetClassDevs
#undef SetupDiDestroyDeviceInfoList
#undef SetupDiGetDeviceInterfaceDetail
#undef SetupDiEnumDeviceInterfaces
#undef SetupDiCreateDeviceInterfaceRegKey
#undef SetupDiCallClassInstaller
#undef SetupDiGetDeviceRegistryProperty
#undef SetupDiSetDeviceRegistryProperty
#undef SetupDiGetDeviceInstanceId
#undef SetupDiOpenDeviceInfo
#undef SetupDiCreateDeviceInfoList
#undef SetupDiOpenDevRegKey
#define SetupDiGetClassDevs \
g_setupapi._SetupDiGetClassDevs
#define SetupDiDestroyDeviceInfoList \
g_setupapi._SetupDiDestroyDeviceInfoList
#define SetupDiGetDeviceInterfaceDetail \
g_setupapi._SetupDiGetDeviceInterfaceDetail
#define SetupDiEnumDeviceInterfaces \
g_setupapi._SetupDiEnumDeviceInterfaces
#define SetupDiCreateDeviceInterfaceRegKey \
g_setupapi._SetupDiCreateDeviceInterfaceRegKey
#define SetupDiCallClassInstaller \
g_setupapi._SetupDiCallClassInstaller
#define SetupDiGetDeviceRegistryProperty \
g_setupapi._SetupDiGetDeviceRegistryProperty
#define SetupDiSetDeviceRegistryProperty \
g_setupapi._SetupDiSetDeviceRegistryProperty
#define SetupDiGetDeviceInstanceId \
g_setupapi._SetupDiGetDeviceInstanceId
#define SetupDiOpenDeviceInfo \
g_setupapi._SetupDiOpenDeviceInfo
#define SetupDiCreateDeviceInfoList \
g_setupapi._SetupDiCreateDeviceInfoList
#define SetupDiOpenDevRegKey \
g_setupapi._SetupDiOpenDevRegKey
#ifdef WINNT
#undef CM_Get_Child
#undef CM_Get_Sibling
#undef CM_Get_Parent
#undef CM_Get_DevNode_Registry_Property
#undef CM_Set_DevNode_Registry_Property
#undef CM_Get_Device_ID
#define CM_Get_Child \
g_setupapi._CM_Get_Child
#define CM_Get_Sibling \
g_setupapi._CM_Get_Sibling
#define CM_Get_Parent \
g_setupapi._CM_Get_Parent
#define CM_Get_DevNode_Registry_Property \
g_setupapi._CM_Get_DevNode_Registry_Property
#define CM_Set_DevNode_Registry_Property \
g_setupapi._CM_Set_DevNode_Registry_Property #define CM_Get_Device_ID \
g_setupapi._CM_Get_Device_ID #endif
/*****************************************************************************
* * HIDDLL * * Note that this must match the HID section in diextdll.c * *****************************************************************************/
typedef union HIDDLL {
MANUALIMPORT rgmi[22]; /* number of functions we import */
struct { void (__stdcall *_HidD_GetHidGuid) ( OUT LPGUID HidGuid );
BOOLEAN (__stdcall *_HidD_GetPreparsedData) ( IN HANDLE HidDeviceObject, OUT PHIDP_PREPARSED_DATA * PreparsedData );
BOOLEAN (__stdcall *_HidD_FreePreparsedData) ( IN PHIDP_PREPARSED_DATA PreparsedData );
BOOLEAN (__stdcall *_HidD_FlushQueue) ( IN HANDLE HidDeviceObject );
BOOLEAN (__stdcall *_HidD_GetAttributes) ( IN HANDLE HidDeviceObject, OUT PHIDD_ATTRIBUTES Attributes );
BOOLEAN (__stdcall *_HidD_GetFeature) ( IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength );
BOOLEAN (__stdcall *_HidD_SetFeature) ( IN HANDLE HidDeviceObject, IN PVOID ReportBuffer, IN ULONG ReportBufferLength );
BOOLEAN (__stdcall *_HidD_GetProductString) ( IN HANDLE HidDeviceObject, OUT PVOID Buffer, IN ULONG BufferLength );
BOOLEAN (__stdcall *_HidD_GetInputReport) ( IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength );
NTSTATUS (__stdcall *_HidP_GetCaps) ( IN PHIDP_PREPARSED_DATA PreparsedData, OUT PHIDP_CAPS Capabilities );
NTSTATUS (__stdcall *_HidP_GetButtonCaps) ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_BUTTON_CAPS ButtonCaps, IN OUT PUSHORT ButtonCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS (__stdcall *_HidP_GetValueCaps) ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_VALUE_CAPS ValueCaps, IN OUT PUSHORT ValueCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS (__stdcall *_HidP_GetLinkCollectionNodes) ( OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, IN OUT PULONG LinkCollectionNodesLength, IN PHIDP_PREPARSED_DATA PreparsedData );
ULONG (__stdcall *_HidP_MaxDataListLength) ( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS (__stdcall *_HidP_GetUsagesEx) ( IN HIDP_REPORT_TYPE ReportType, IN USHORT LinkCollection, OUT PUSAGE_AND_PAGE ButtonList, IN OUT ULONG * UsageLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS (__stdcall *_HidP_GetScaledUsageValue) ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN USHORT LinkCollection, IN USAGE Usage, OUT PLONG UsageValue, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS (__stdcall *_HidP_GetData) ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_DATA DataList, IN OUT PULONG DataLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS (__stdcall *_HidP_SetData) ( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_DATA DataList, IN OUT PULONG DataLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN OUT PCHAR Report, IN ULONG ReportLength );
NTSTATUS (__stdcall *_HidP_GetUsageValue) ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN USHORT LinkCollection, IN USAGE Usage, OUT PULONG UsageValue, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
ULONG (__stdcall *_HidP_MaxUsageListLength) ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS (__stdcall *_HidP_GetSpecificButtonCaps) ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, // Optional (0 => ignore)
IN USHORT LinkCollection, // Optional (0 => ignore)
IN USAGE Usage, // Optional (0 => ignore)
OUT PHIDP_BUTTON_CAPS ButtonCaps, IN OUT PUSHORT ButtonCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS (__stdcall *_HidP_TranslateUsagesToI8042ScanCodes) ( IN PUSAGE ChangedUsageList, // Those usages that changed
IN ULONG UsageListLength, IN HIDP_KEYBOARD_DIRECTION KeyAction, IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, IN PVOID InsertCodesContext );
};
} HIDDLL, *PHIDDLL;
extern HIDDLL g_hiddll;
#undef HidD_GetHidGuid
#undef HidD_GetPreparsedData
#undef HidD_FreePreparsedData
#undef HidD_FlushQueue
#undef HidD_GetAttributes
#undef HidD_GetFeature
#undef HidD_SetFeature
#undef HidD_GetProductString
#undef HidD_GetInputReport
#undef HidP_GetCaps
#undef HidP_GetButtonCaps
#undef HidP_GetValueCaps
#undef HidP_GetLinkCollectionNodes
#undef HidP_MaxDataListLength
#undef HidP_GetUsagesEx
#undef HidP_GetScaledUsageValue
#undef HidP_GetData
#undef HidP_SetData
#undef HidP_GetUsageValue
#undef HidP_MaxUsageListLength
#undef HidP_GetSpecificButtonCaps
#undef HidP_TranslateUsagesToI8042ScanCodes
#define HidD_GetHidGuid \
g_hiddll._HidD_GetHidGuid
#define HidD_GetPreparsedData \
g_hiddll._HidD_GetPreparsedData
#define HidD_FreePreparsedData \
g_hiddll._HidD_FreePreparsedData
#define HidD_FlushQueue \
g_hiddll._HidD_FlushQueue
#define HidD_GetAttributes \
g_hiddll._HidD_GetAttributes \
#define HidD_GetFeature \
g_hiddll._HidD_GetFeature \
#define HidD_SetFeature \
g_hiddll._HidD_SetFeature \
#define HidD_GetProductString \
g_hiddll._HidD_GetProductString \
#define HidD_GetInputReport \
g_hiddll._HidD_GetInputReport \
#define HidP_GetCaps \
g_hiddll._HidP_GetCaps
#define HidP_GetButtonCaps \
g_hiddll._HidP_GetButtonCaps
#define HidP_GetValueCaps \
g_hiddll._HidP_GetValueCaps
#define HidP_GetLinkCollectionNodes \
g_hiddll._HidP_GetLinkCollectionNodes
#define HidP_MaxDataListLength \
g_hiddll._HidP_MaxDataListLength \
#define HidP_GetUsagesEx \
g_hiddll._HidP_GetUsagesEx \
#define HidP_GetScaledUsageValue \
g_hiddll._HidP_GetScaledUsageValue \
#define HidP_GetData \
g_hiddll._HidP_GetData \
#define HidP_SetData \
g_hiddll._HidP_SetData \
#define HidP_GetUsageValue \
g_hiddll._HidP_GetUsageValue \
#define HidP_MaxUsageListLength \
g_hiddll._HidP_MaxUsageListLength \
#define HidP_GetSpecificButtonCaps \
g_hiddll._HidP_GetSpecificButtonCaps \
#define HidP_TranslateUsagesToI8042ScanCodes \
g_hiddll._HidP_TranslateUsagesToI8042ScanCodes \
/*****************************************************************************
* * WINMMDLL * * Note that this must match the WINMM section in diextdll.c * *****************************************************************************/
typedef union WINMMDLL { MANUALIMPORT rgmi[11]; /* number of functions we import */
struct { MMRESULT ( WINAPI * _joyGetDevCaps) ( IN UINT uJoyID, OUT LPJOYCAPS pjc, IN UINT cbjc );
MMRESULT ( WINAPI * _joyGetPosEx) ( IN UINT uJoyID, OUT LPJOYINFOEX pji );
MMRESULT ( WINAPI * _joyGetPos) ( IN UINT uJoyID, OUT LPJOYINFO pji );
UINT ( WINAPI * _joyConfigChanged) ( IN DWORD dwFlags );
MMRESULT ( WINAPI * _mmioClose ) ( IN HMMIO hmmio, IN UINT fuClose );
HMMIO ( WINAPI * _mmioOpenA ) ( IN OUT LPSTR pszFileName, IN OUT LPMMIOINFO pmmioinfo, IN DWORD fdwOpen );
MMRESULT ( WINAPI * _mmioDescend ) ( IN HMMIO hmmio, IN OUT LPMMCKINFO pmmcki, IN const MMCKINFO FAR* pmmckiParent, IN UINT fuDescend );
MMRESULT ( WINAPI * _mmioCreateChunk ) ( IN HMMIO hmmio, IN LPMMCKINFO pmmcki, IN UINT fuCreate );
LONG ( WINAPI * _mmioRead ) ( IN HMMIO hmmio, OUT HPSTR pch, IN LONG cch );
LONG ( WINAPI * _mmioWrite ) ( IN HMMIO hmmio, IN const char _huge* pch, IN LONG cch );
MMRESULT ( WINAPI * _mmioAscend ) ( IN HMMIO hmmio, IN LPMMCKINFO pmmcki, IN UINT fuAscend ); };
} WINMMDLL, *PWINMMDLL;
extern WINMMDLL g_winmmdll;
#undef joyGetDevCaps
#undef joyGetPosEx
#undef joyGetPos
#undef joyConfigChanged
#undef mmioClose
#undef mmioOpenA
#undef mmioDescend
#undef mmioCreateChunk
#undef mmioRead
#undef mmioWrite
#undef mmioAscend
#define joyGetDevCaps \
g_winmmdll._joyGetDevCaps
#define joyGetPosEx \
g_winmmdll._joyGetPosEx
#define joyGetPos \
g_winmmdll._joyGetPos
#define joyConfigChanged \
g_winmmdll._joyConfigChanged
#define mmioClose \
g_winmmdll._mmioClose
#define mmioOpenA \
g_winmmdll._mmioOpenA
#define mmioDescend \
g_winmmdll._mmioDescend
#define mmioCreateChunk \
g_winmmdll._mmioCreateChunk
#define mmioRead \
g_winmmdll._mmioRead
#define mmioWrite \
g_winmmdll._mmioWrite
#define mmioAscend \
g_winmmdll._mmioAscend
/*****************************************************************************
* * USER32 * * Note that this must match the USER32 section in diextdll.c * *****************************************************************************/
#ifdef USE_WM_INPUT
typedef union USER32 {
MANUALIMPORT rgmi[2]; /* number of functions we import */
struct { BOOL ( WINAPI * _RegisterRawInputDevices) ( PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize );
UINT ( WINAPI * _GetRawInputData) ( HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader ); };
} USER32, *PUSER32;
extern USER32 g_user32;
#undef RegisterRawInputDevices
#undef GetRawInputData
#define RegisterRawInputDevices \
g_user32._RegisterRawInputDevices
#define GetRawInputData \
g_user32._GetRawInputData
#endif
/*****************************************************************************
* * Dummy functions * * These functions are used only when some DLLs can't be loaded. * *****************************************************************************/
//cfgmgr32.dll
CONFIGRET WINAPI DIDummy_CM_Get_Child ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET WINAPI DIDummy_CM_Get_Sibling ( OUT PDEVINST pdnDevInst, IN DEVINST DevInst, IN ULONG ulFlags );
CONFIGRET WINAPI DIDummy_CM_Get_Parent ( OUT PDEVINST pdnDevInst, IN DEVINST dnDevInst, IN ULONG ulFlags );
CONFIGRET WINAPI DIDummy_CM_Get_DevNode_Registry_Property ( IN DEVINST dnDevInst, IN ULONG ulProperty, OUT PULONG pulRegDataType, OPTIONAL OUT PVOID Buffer, OPTIONAL IN OUT PULONG pulLength, IN ULONG ulFlags );
CONFIGRET WINAPI DIDummy_CM_Set_DevNode_Registry_Property ( IN DEVINST dnDevInst, IN ULONG ulProperty, IN PVOID Buffer, OPTIONAL IN ULONG ulLength, IN ULONG ulFlags );
CONFIGRET WINAPI DIDummy_CM_Get_Device_ID ( IN DEVINST dnDevInst, OUT PTCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags );
//Setupapi.dll
HDEVINFO WINAPI DIDummy_SetupDiGetClassDevs ( IN LPGUID ClassGuid, OPTIONAL IN LPCTSTR Enumerator, OPTIONAL IN HWND hwndParent, OPTIONAL IN DWORD Flags );
BOOL WINAPI DIDummy_SetupDiDestroyDeviceInfoList ( IN HDEVINFO DeviceInfoSet );
BOOL WINAPI DIDummy_SetupDiGetDeviceInterfaceDetail ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVICE_INTERFACE_DATA pdid, OUT PSP_DEVICE_INTERFACE_DETAIL_DATA pdidd, OPTIONAL IN DWORD cbDidd, OUT PDWORD RequiredSize, OPTIONAL OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
BOOL WINAPI DIDummy_SetupDiEnumDeviceInterfaces ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL IN LPGUID InterfaceClassGuid, IN DWORD MemberIndex, OUT PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData );
HKEY WINAPI DIDummy_SetupDiCreateDeviceInterfaceRegKey ( IN HDEVINFO hdev, IN PSP_DEVICE_INTERFACE_DATA pdid, IN DWORD Reserved, IN REGSAM samDesired, IN HINF InfHandle, OPTIONAL IN PCSTR InfSectionName OPTIONAL );
BOOL WINAPI DIDummy_SetupDiCallClassInstaller ( IN DI_FUNCTION InstallFunction, IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
BOOL WINAPI DIDummy_SetupDiGetDeviceRegistryProperty ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Property, OUT PDWORD PropertyRegDataType, OPTIONAL OUT PBYTE PropertyBuffer, IN DWORD PropertyBufferSize, OUT PDWORD RequiredSize OPTIONAL );
BOOL WINAPI DIDummy_SetupDiSetDeviceRegistryProperty ( IN HDEVINFO DeviceInfoSet, IN OUT PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Property, IN CONST BYTE* PropertyBuffer, IN DWORD PropertyBufferSize );
BOOL WINAPI DIDummy_SetupDiGetDeviceInstanceId ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT PTSTR DeviceInstanceId, IN DWORD DeviceInstanceIdSize, OUT PDWORD RequiredSize OPTIONAL );
BOOL WINAPI DIDummy_SetupDiOpenDeviceInfo ( IN HDEVINFO DeviceInfoSet, IN LPCTSTR DeviceInstanceId, IN HWND hwndParent, OPTIONAL IN DWORD OpenFlags, OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
HDEVINFO WINAPI DIDummy_SetupDiCreateDeviceInfoList ( IN LPGUID ClassGuid, OPTIONAL IN HWND hwndParent OPTIONAL );
HKEY WINAPI DIDummy_SetupDiOpenDevRegKey ( IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DWORD Scope, IN DWORD HwProfile, IN DWORD KeyType, IN REGSAM samDesired );
// hid.dll
void __stdcall DIDummy_HidD_GetHidGuid ( OUT LPGUID HidGuid );
BOOLEAN __stdcall DIDummy_HidD_GetPreparsedData ( IN HANDLE HidDeviceObject, OUT PHIDP_PREPARSED_DATA * PreparsedData );
BOOLEAN __stdcall DIDummy_HidD_FreePreparsedData ( IN PHIDP_PREPARSED_DATA PreparsedData );
BOOLEAN __stdcall DIDummy_HidD_FlushQueue ( IN HANDLE HidDeviceObject );
BOOLEAN __stdcall DIDummy_HidD_GetAttributes ( IN HANDLE HidDeviceObject, OUT PHIDD_ATTRIBUTES Attributes );
BOOLEAN __stdcall DIDummy_HidD_GetFeature ( IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength );
BOOLEAN __stdcall DIDummy_HidD_SetFeature ( IN HANDLE HidDeviceObject, IN PVOID ReportBuffer, IN ULONG ReportBufferLength );
BOOLEAN __stdcall DIDummy_HidD_GetProductString ( IN HANDLE HidDeviceObject, OUT PVOID Buffer, IN ULONG BufferLength );
BOOLEAN __stdcall DIDummy_HidD_GetInputReport ( IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength );
NTSTATUS __stdcall DIDummy_HidP_GetCaps ( IN PHIDP_PREPARSED_DATA PreparsedData, OUT PHIDP_CAPS Capabilities );
NTSTATUS __stdcall DIDummy_HidP_GetButtonCaps ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_BUTTON_CAPS ButtonCaps, IN OUT PUSHORT ButtonCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS __stdcall DIDummy_HidP_GetValueCaps ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_VALUE_CAPS ValueCaps, IN OUT PUSHORT ValueCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS __stdcall DIDummy_HidP_GetLinkCollectionNodes ( OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, IN OUT PULONG LinkCollectionNodesLength, IN PHIDP_PREPARSED_DATA PreparsedData );
ULONG __stdcall DIDummy_HidP_MaxDataListLength ( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS __stdcall DIDummy_HidP_GetUsagesEx //unused
( IN HIDP_REPORT_TYPE ReportType, IN USHORT LinkCollection, OUT PUSAGE_AND_PAGE ButtonList, IN OUT ULONG * UsageLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS __stdcall DIDummy_HidP_GetScaledUsageValue //unused
( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN USHORT LinkCollection, IN USAGE Usage, OUT PLONG UsageValue, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS __stdcall DIDummy_HidP_GetData ( IN HIDP_REPORT_TYPE ReportType, OUT PHIDP_DATA DataList, IN OUT PULONG DataLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
NTSTATUS __stdcall DIDummy_HidP_SetData ( IN HIDP_REPORT_TYPE ReportType, IN PHIDP_DATA DataList, IN OUT PULONG DataLength, IN PHIDP_PREPARSED_DATA PreparsedData, IN OUT PCHAR Report, IN ULONG ReportLength );
NTSTATUS __stdcall DIDummy_HidP_GetUsageValue ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN USHORT LinkCollection, IN USAGE Usage, OUT PULONG UsageValue, IN PHIDP_PREPARSED_DATA PreparsedData, IN PCHAR Report, IN ULONG ReportLength );
ULONG __stdcall DIDummy_HidP_MaxUsageListLength ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS __stdcall DIDummy_HidP_GetSpecificButtonCaps ( IN HIDP_REPORT_TYPE ReportType, IN USAGE UsagePage, IN USHORT LinkCollection, IN USAGE Usage, OUT PHIDP_BUTTON_CAPS ButtonCaps, IN OUT PUSHORT ButtonCapsLength, IN PHIDP_PREPARSED_DATA PreparsedData );
NTSTATUS __stdcall DIDummy_HidP_TranslateUsagesToI8042ScanCodes ( IN PUSAGE ChangedUsageList, // Those usages that changed
IN ULONG UsageListLength, IN HIDP_KEYBOARD_DIRECTION KeyAction, IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, IN PVOID InsertCodesContext );
// winmm.dll
MMRESULT WINAPI DIDummy_joyGetDevCaps ( IN UINT uJoyID, OUT LPJOYCAPS pjc, IN UINT cbjc );
MMRESULT WINAPI DIDummy_joyGetPosEx ( IN UINT uJoyID, OUT LPJOYINFOEX pji );
MMRESULT WINAPI DIDummy_joyGetPos ( IN UINT uJoyID, OUT LPJOYINFO pji );
UINT WINAPI DIDummy_joyConfigChanged ( IN DWORD dwFlags );
MMRESULT WINAPI DIDummy_mmioClose ( IN HMMIO hmmio, IN UINT fuClose );
HMMIO WINAPI DIDummy_mmioOpenA ( IN OUT LPSTR pszFileName, IN OUT LPMMIOINFO pmmioinfo, IN DWORD fdwOpen );
MMRESULT WINAPI DIDummy_mmioDescend ( IN HMMIO hmmio, IN OUT LPMMCKINFO pmmcki, IN const MMCKINFO FAR* pmmckiParent, IN UINT fuDescend );
MMRESULT WINAPI DIDummy_mmioCreateChunk ( IN HMMIO hmmio, IN LPMMCKINFO pmmcki, IN UINT fuCreate );
LONG WINAPI DIDummy_mmioRead ( IN HMMIO hmmio, OUT HPSTR pch, IN LONG cch );
LONG WINAPI DIDummy_mmioWrite ( IN HMMIO hmmio, IN const char _huge* pch, IN LONG cch );
MMRESULT WINAPI DIDummy_mmioAscend ( IN HMMIO hmmio, IN LPMMCKINFO pmmcki, IN UINT fuAscend );
// user32.dll
#ifdef USE_WM_INPUT
BOOL WINAPI DIDummy_RegisterRawInputDevices ( PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize );
UINT WINAPI DIDummy_GetRawInputData ( HRAWINPUT hRawInput, UINT uiCommand, LPVOID pData, PUINT pcbSize, UINT cbSizeHeader );
#endif // #ifdef USE_WM_INPUT
#endif /* STATIC_DLLUSAGE */
#endif /* _DIEXTDLL_H */
|