PageRenderTime 43ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 1ms

/libusbK/includes/lusbk_dynapi.c

http://usb-travis.googlecode.com/
C | 1915 lines | 1451 code | 437 blank | 27 comment | 168 complexity | 9d45b3334b99d5215ff9cc15d500a214 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. /*!********************************************************************
  2. libusbK - Multi-driver USB library.
  3. Copyright (C) 2012 Travis Lee Robinson. All Rights Reserved.
  4. libusb-win32.sourceforge.net
  5. Development : Travis Lee Robinson (libusbdotnet@gmail.com)
  6. Testing : Xiaofan Chen (xiaofanc@gmail.com)
  7. At the discretion of the user of this library, this software may be
  8. licensed under the terms of the GNU Public License v3 or a BSD-Style
  9. license as outlined in the following files:
  10. * LICENSE-gpl3.txt
  11. * LICENSE-bsd.txt
  12. License files are located in a license folder at the root of source and
  13. binary distributions.
  14. ********************************************************************!*/
  15. #include <windows.h>
  16. #include "libusbk.h"
  17. #define mLoadLibraryExA LoadLibraryExA
  18. #define mFreeLibrary FreeLibrary
  19. HMODULE mLibusbK_ModuleHandle = NULL;
  20. VOID LibusbK_DynApi_Free(VOID);
  21. INT LibusbK_DynApi_Init(_inopt LPCSTR DllFullPathName);
  22. // Function typedefs:
  23. typedef VOID KUSB_API LibK_GetVersion_T(_out PKLIB_VERSION Version);
  24. typedef KLIB_USER_CONTEXT KUSB_API LibK_GetContext_T(
  25. _in KLIB_HANDLE Handle,
  26. _in KLIB_HANDLE_TYPE HandleType);
  27. typedef BOOL KUSB_API LibK_SetContext_T(
  28. _in KLIB_HANDLE Handle,
  29. _in KLIB_HANDLE_TYPE HandleType,
  30. _in KLIB_USER_CONTEXT ContextValue);
  31. typedef BOOL KUSB_API LibK_SetCleanupCallback_T(
  32. _in KLIB_HANDLE Handle,
  33. _in KLIB_HANDLE_TYPE HandleType,
  34. _in KLIB_HANDLE_CLEANUP_CB* CleanupCB);
  35. typedef BOOL KUSB_API LibK_LoadDriverAPI_T(
  36. _out PKUSB_DRIVER_API DriverAPI,
  37. _in INT DriverID);
  38. typedef BOOL KUSB_API LibK_CopyDriverAPI_T(
  39. _out PKUSB_DRIVER_API DriverAPI,
  40. _in KUSB_HANDLE UsbHandle);
  41. typedef BOOL KUSB_API LibK_GetProcAddress_T(
  42. _out KPROC* ProcAddress,
  43. _in INT DriverID,
  44. _in INT FunctionID);
  45. typedef BOOL KUSB_API LibK_SetDefaultContext_T(
  46. _in KLIB_HANDLE_TYPE HandleType,
  47. _in KLIB_USER_CONTEXT ContextValue);
  48. typedef KLIB_USER_CONTEXT KUSB_API LibK_GetDefaultContext_T(
  49. _in KLIB_HANDLE_TYPE HandleType);
  50. typedef BOOL KUSB_API LibK_Context_Init_T(
  51. _inopt HANDLE Heap,
  52. _in PVOID Reserved);
  53. typedef VOID KUSB_API LibK_Context_Free_T(VOID);
  54. typedef BOOL KUSB_API UsbK_Init_T (
  55. _out KUSB_HANDLE* InterfaceHandle,
  56. _in KLST_DEVINFO_HANDLE DevInfo);
  57. typedef BOOL KUSB_API UsbK_Free_T (
  58. _in KUSB_HANDLE InterfaceHandle);
  59. typedef BOOL KUSB_API UsbK_ClaimInterface_T (
  60. _in KUSB_HANDLE InterfaceHandle,
  61. _in UCHAR NumberOrIndex,
  62. _in BOOL IsIndex);
  63. typedef BOOL KUSB_API UsbK_ReleaseInterface_T (
  64. _in KUSB_HANDLE InterfaceHandle,
  65. _in UCHAR NumberOrIndex,
  66. _in BOOL IsIndex);
  67. typedef BOOL KUSB_API UsbK_SetAltInterface_T (
  68. _in KUSB_HANDLE InterfaceHandle,
  69. _in UCHAR NumberOrIndex,
  70. _in BOOL IsIndex,
  71. _in UCHAR AltSettingNumber);
  72. typedef BOOL KUSB_API UsbK_GetAltInterface_T (
  73. _in KUSB_HANDLE InterfaceHandle,
  74. _in UCHAR NumberOrIndex,
  75. _in BOOL IsIndex,
  76. _out PUCHAR AltSettingNumber);
  77. typedef BOOL KUSB_API UsbK_GetDescriptor_T (
  78. _in KUSB_HANDLE InterfaceHandle,
  79. _in UCHAR DescriptorType,
  80. _in UCHAR Index,
  81. _in USHORT LanguageID,
  82. _out PUCHAR Buffer,
  83. _in UINT BufferLength,
  84. _outopt PUINT LengthTransferred);
  85. typedef BOOL KUSB_API UsbK_ControlTransfer_T (
  86. _in KUSB_HANDLE InterfaceHandle,
  87. _in WINUSB_SETUP_PACKET SetupPacket,
  88. _refopt PUCHAR Buffer,
  89. _in UINT BufferLength,
  90. _outopt PUINT LengthTransferred,
  91. _inopt LPOVERLAPPED Overlapped);
  92. typedef BOOL KUSB_API UsbK_SetPowerPolicy_T (
  93. _in KUSB_HANDLE InterfaceHandle,
  94. _in UINT PolicyType,
  95. _in UINT ValueLength,
  96. _in PVOID Value);
  97. typedef BOOL KUSB_API UsbK_GetPowerPolicy_T (
  98. _in KUSB_HANDLE InterfaceHandle,
  99. _in UINT PolicyType,
  100. _ref PUINT ValueLength,
  101. _out PVOID Value);
  102. typedef BOOL KUSB_API UsbK_SetConfiguration_T (
  103. _in KUSB_HANDLE InterfaceHandle,
  104. _in UCHAR ConfigurationNumber);
  105. typedef BOOL KUSB_API UsbK_GetConfiguration_T (
  106. _in KUSB_HANDLE InterfaceHandle,
  107. _out PUCHAR ConfigurationNumber);
  108. typedef BOOL KUSB_API UsbK_ResetDevice_T (
  109. _in KUSB_HANDLE InterfaceHandle);
  110. typedef BOOL KUSB_API UsbK_Initialize_T (
  111. _in HANDLE DeviceHandle,
  112. _out KUSB_HANDLE* InterfaceHandle);
  113. typedef BOOL KUSB_API UsbK_SelectInterface_T (
  114. _in KUSB_HANDLE InterfaceHandle,
  115. _in UCHAR NumberOrIndex,
  116. _in BOOL IsIndex);
  117. typedef BOOL KUSB_API UsbK_GetAssociatedInterface_T (
  118. _in KUSB_HANDLE InterfaceHandle,
  119. _in UCHAR AssociatedInterfaceIndex,
  120. _out KUSB_HANDLE* AssociatedInterfaceHandle);
  121. typedef BOOL KUSB_API UsbK_Clone_T (
  122. _in KUSB_HANDLE InterfaceHandle,
  123. _out KUSB_HANDLE* DstInterfaceHandle);
  124. typedef BOOL KUSB_API UsbK_QueryInterfaceSettings_T (
  125. _in KUSB_HANDLE InterfaceHandle,
  126. _in UCHAR AltSettingIndex,
  127. _out PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor);
  128. typedef BOOL KUSB_API UsbK_QueryDeviceInformation_T (
  129. _in KUSB_HANDLE InterfaceHandle,
  130. _in UINT InformationType,
  131. _ref PUINT BufferLength,
  132. _ref PVOID Buffer);
  133. typedef BOOL KUSB_API UsbK_SetCurrentAlternateSetting_T (
  134. _in KUSB_HANDLE InterfaceHandle,
  135. _in UCHAR AltSettingNumber);
  136. typedef BOOL KUSB_API UsbK_GetCurrentAlternateSetting_T (
  137. _in KUSB_HANDLE InterfaceHandle,
  138. _out PUCHAR AltSettingNumber);
  139. typedef BOOL KUSB_API UsbK_QueryPipe_T (
  140. _in KUSB_HANDLE InterfaceHandle,
  141. _in UCHAR AltSettingNumber,
  142. _in UCHAR PipeIndex,
  143. _out PWINUSB_PIPE_INFORMATION PipeInformation);
  144. typedef BOOL KUSB_API UsbK_SetPipePolicy_T (
  145. _in KUSB_HANDLE InterfaceHandle,
  146. _in UCHAR PipeID,
  147. _in UINT PolicyType,
  148. _in UINT ValueLength,
  149. _in PVOID Value);
  150. typedef BOOL KUSB_API UsbK_GetPipePolicy_T (
  151. _in KUSB_HANDLE InterfaceHandle,
  152. _in UCHAR PipeID,
  153. _in UINT PolicyType,
  154. _ref PUINT ValueLength,
  155. _out PVOID Value);
  156. typedef BOOL KUSB_API UsbK_ReadPipe_T (
  157. _in KUSB_HANDLE InterfaceHandle,
  158. _in UCHAR PipeID,
  159. _out PUCHAR Buffer,
  160. _in UINT BufferLength,
  161. _outopt PUINT LengthTransferred,
  162. _inopt LPOVERLAPPED Overlapped);
  163. typedef BOOL KUSB_API UsbK_WritePipe_T (
  164. _in KUSB_HANDLE InterfaceHandle,
  165. _in UCHAR PipeID,
  166. _in PUCHAR Buffer,
  167. _in UINT BufferLength,
  168. _outopt PUINT LengthTransferred,
  169. _inopt LPOVERLAPPED Overlapped);
  170. typedef BOOL KUSB_API UsbK_ResetPipe_T (
  171. _in KUSB_HANDLE InterfaceHandle,
  172. _in UCHAR PipeID);
  173. typedef BOOL KUSB_API UsbK_AbortPipe_T (
  174. _in KUSB_HANDLE InterfaceHandle,
  175. _in UCHAR PipeID);
  176. typedef BOOL KUSB_API UsbK_FlushPipe_T (
  177. _in KUSB_HANDLE InterfaceHandle,
  178. _in UCHAR PipeID);
  179. typedef BOOL KUSB_API UsbK_IsoReadPipe_T (
  180. _in KUSB_HANDLE InterfaceHandle,
  181. _in UCHAR PipeID,
  182. _out PUCHAR Buffer,
  183. _in UINT BufferLength,
  184. _in LPOVERLAPPED Overlapped,
  185. _refopt PKISO_CONTEXT IsoContext);
  186. typedef BOOL KUSB_API UsbK_IsoWritePipe_T (
  187. _in KUSB_HANDLE InterfaceHandle,
  188. _in UCHAR PipeID,
  189. _in PUCHAR Buffer,
  190. _in UINT BufferLength,
  191. _in LPOVERLAPPED Overlapped,
  192. _refopt PKISO_CONTEXT IsoContext);
  193. typedef BOOL KUSB_API UsbK_GetCurrentFrameNumber_T (
  194. _in KUSB_HANDLE InterfaceHandle,
  195. _out PUINT FrameNumber);
  196. typedef BOOL KUSB_API UsbK_GetOverlappedResult_T (
  197. _in KUSB_HANDLE InterfaceHandle,
  198. _in LPOVERLAPPED Overlapped,
  199. _out PUINT lpNumberOfBytesTransferred,
  200. _in BOOL bWait);
  201. typedef BOOL KUSB_API UsbK_GetProperty_T (
  202. _in KUSB_HANDLE InterfaceHandle,
  203. _in KUSB_PROPERTY PropertyType,
  204. _ref PUINT PropertySize,
  205. _out PVOID Value);
  206. typedef BOOL KUSB_API LstK_Init_T(
  207. _out KLST_HANDLE* DeviceList,
  208. _in KLST_FLAG Flags);
  209. typedef BOOL KUSB_API LstK_InitEx_T(
  210. _out KLST_HANDLE* DeviceList,
  211. _in KLST_FLAG Flags,
  212. _in PKLST_PATTERN_MATCH PatternMatch);
  213. typedef BOOL KUSB_API LstK_Free_T(
  214. _in KLST_HANDLE DeviceList);
  215. typedef BOOL KUSB_API LstK_Enumerate_T(
  216. _in KLST_HANDLE DeviceList,
  217. _in KLST_ENUM_DEVINFO_CB* EnumDevListCB,
  218. _inopt PVOID Context);
  219. typedef BOOL KUSB_API LstK_Current_T(
  220. _in KLST_HANDLE DeviceList,
  221. _out KLST_DEVINFO_HANDLE* DeviceInfo);
  222. typedef BOOL KUSB_API LstK_MoveNext_T(
  223. _in KLST_HANDLE DeviceList,
  224. _outopt KLST_DEVINFO_HANDLE* DeviceInfo);
  225. typedef VOID KUSB_API LstK_MoveReset_T(
  226. _in KLST_HANDLE DeviceList);
  227. typedef BOOL KUSB_API LstK_FindByVidPid_T(
  228. _in KLST_HANDLE DeviceList,
  229. _in INT Vid,
  230. _in INT Pid,
  231. _out KLST_DEVINFO_HANDLE* DeviceInfo);
  232. typedef BOOL KUSB_API LstK_Count_T(
  233. _in KLST_HANDLE DeviceList,
  234. _ref PUINT Count);
  235. typedef BOOL KUSB_API HotK_Init_T(
  236. _out KHOT_HANDLE* Handle,
  237. _ref PKHOT_PARAMS InitParams);
  238. typedef BOOL KUSB_API HotK_Free_T(
  239. _in KHOT_HANDLE Handle);
  240. typedef VOID KUSB_API HotK_FreeAll_T(VOID);
  241. typedef BOOL KUSB_API OvlK_Acquire_T(
  242. _out KOVL_HANDLE* OverlappedK,
  243. _in KOVL_POOL_HANDLE PoolHandle);
  244. typedef BOOL KUSB_API OvlK_Release_T(
  245. _in KOVL_HANDLE OverlappedK);
  246. typedef BOOL KUSB_API OvlK_Init_T (
  247. _out KOVL_POOL_HANDLE* PoolHandle,
  248. _in KUSB_HANDLE UsbHandle,
  249. _in INT MaxOverlappedCount,
  250. _inopt KOVL_POOL_FLAG Flags);
  251. typedef BOOL KUSB_API OvlK_Free_T(
  252. _in KOVL_POOL_HANDLE PoolHandle);
  253. typedef HANDLE KUSB_API OvlK_GetEventHandle_T(
  254. _in KOVL_HANDLE OverlappedK);
  255. typedef BOOL KUSB_API OvlK_Wait_T(
  256. _in KOVL_HANDLE OverlappedK,
  257. _inopt INT TimeoutMS,
  258. _inopt KOVL_WAIT_FLAG WaitFlags,
  259. _out PUINT TransferredLength);
  260. typedef BOOL KUSB_API OvlK_WaitOldest_T(
  261. _in KOVL_POOL_HANDLE PoolHandle,
  262. _outopt KOVL_HANDLE* OverlappedK,
  263. _inopt INT TimeoutMS,
  264. _inopt KOVL_WAIT_FLAG WaitFlags,
  265. _out PUINT TransferredLength);
  266. typedef BOOL KUSB_API OvlK_WaitOrCancel_T(
  267. _in KOVL_HANDLE OverlappedK,
  268. _inopt INT TimeoutMS,
  269. _out PUINT TransferredLength);
  270. typedef BOOL KUSB_API OvlK_WaitAndRelease_T(
  271. _in KOVL_HANDLE OverlappedK,
  272. _inopt INT TimeoutMS,
  273. _out PUINT TransferredLength);
  274. typedef BOOL KUSB_API OvlK_IsComplete_T(
  275. _in KOVL_HANDLE OverlappedK);
  276. typedef BOOL KUSB_API OvlK_ReUse_T(
  277. _in KOVL_HANDLE OverlappedK);
  278. typedef BOOL KUSB_API StmK_Init_T(
  279. _out KSTM_HANDLE* StreamHandle,
  280. _in KUSB_HANDLE UsbHandle,
  281. _in UCHAR PipeID,
  282. _in INT MaxTransferSize,
  283. _in INT MaxPendingTransfers,
  284. _in INT MaxPendingIO,
  285. _inopt PKSTM_CALLBACK Callbacks,
  286. _inopt KSTM_FLAG Flags);
  287. typedef BOOL KUSB_API StmK_Free_T(
  288. _in KSTM_HANDLE StreamHandle);
  289. typedef BOOL KUSB_API StmK_Start_T(
  290. _in KSTM_HANDLE StreamHandle);
  291. typedef BOOL KUSB_API StmK_Stop_T(
  292. _in KSTM_HANDLE StreamHandle,
  293. _in INT TimeoutCancelMS);
  294. typedef BOOL KUSB_API StmK_Read_T(
  295. _in KSTM_HANDLE StreamHandle,
  296. _out PUCHAR Buffer,
  297. _in INT Offset,
  298. _in INT Length,
  299. _out PUINT TransferredLength);
  300. typedef BOOL KUSB_API StmK_Write_T(
  301. _in KSTM_HANDLE StreamHandle,
  302. _in PUCHAR Buffer,
  303. _in INT Offset,
  304. _in INT Length,
  305. _out PUINT TransferredLength);
  306. typedef BOOL KUSB_API IsoK_Init_T(
  307. _out PKISO_CONTEXT* IsoContext,
  308. _in INT NumberOfPackets,
  309. _inopt INT StartFrame);
  310. typedef BOOL KUSB_API IsoK_Free_T(
  311. _in PKISO_CONTEXT IsoContext);
  312. typedef BOOL KUSB_API IsoK_SetPackets_T(
  313. _in PKISO_CONTEXT IsoContext,
  314. _in INT PacketSize);
  315. typedef BOOL KUSB_API IsoK_SetPacket_T(
  316. _in PKISO_CONTEXT IsoContext,
  317. _in INT PacketIndex,
  318. _in PKISO_PACKET IsoPacket);
  319. typedef BOOL KUSB_API IsoK_GetPacket_T(
  320. _in PKISO_CONTEXT IsoContext,
  321. _in INT PacketIndex,
  322. _out PKISO_PACKET IsoPacket);
  323. typedef BOOL KUSB_API IsoK_EnumPackets_T(
  324. _in PKISO_CONTEXT IsoContext,
  325. _in KISO_ENUM_PACKETS_CB* EnumPackets,
  326. _inopt INT StartPacketIndex,
  327. _inopt PVOID UserState);
  328. typedef BOOL KUSB_API IsoK_ReUse_T(
  329. _ref PKISO_CONTEXT IsoContext);
  330. ///////////////////////////////////////////////////////////////////////
  331. // Function pointers:
  332. static LibK_GetVersion_T* pLibK_GetVersion = NULL;
  333. static LibK_GetContext_T* pLibK_GetContext = NULL;
  334. static LibK_SetContext_T* pLibK_SetContext = NULL;
  335. static LibK_SetCleanupCallback_T* pLibK_SetCleanupCallback = NULL;
  336. static LibK_LoadDriverAPI_T* pLibK_LoadDriverAPI = NULL;
  337. static LibK_CopyDriverAPI_T* pLibK_CopyDriverAPI = NULL;
  338. static LibK_GetProcAddress_T* pLibK_GetProcAddress = NULL;
  339. static LibK_SetDefaultContext_T* pLibK_SetDefaultContext = NULL;
  340. static LibK_GetDefaultContext_T* pLibK_GetDefaultContext = NULL;
  341. static LibK_Context_Init_T* pLibK_Context_Init = NULL;
  342. static LibK_Context_Free_T* pLibK_Context_Free = NULL;
  343. static UsbK_Init_T* pUsbK_Init = NULL;
  344. static UsbK_Free_T* pUsbK_Free = NULL;
  345. static UsbK_ClaimInterface_T* pUsbK_ClaimInterface = NULL;
  346. static UsbK_ReleaseInterface_T* pUsbK_ReleaseInterface = NULL;
  347. static UsbK_SetAltInterface_T* pUsbK_SetAltInterface = NULL;
  348. static UsbK_GetAltInterface_T* pUsbK_GetAltInterface = NULL;
  349. static UsbK_GetDescriptor_T* pUsbK_GetDescriptor = NULL;
  350. static UsbK_ControlTransfer_T* pUsbK_ControlTransfer = NULL;
  351. static UsbK_SetPowerPolicy_T* pUsbK_SetPowerPolicy = NULL;
  352. static UsbK_GetPowerPolicy_T* pUsbK_GetPowerPolicy = NULL;
  353. static UsbK_SetConfiguration_T* pUsbK_SetConfiguration = NULL;
  354. static UsbK_GetConfiguration_T* pUsbK_GetConfiguration = NULL;
  355. static UsbK_ResetDevice_T* pUsbK_ResetDevice = NULL;
  356. static UsbK_Initialize_T* pUsbK_Initialize = NULL;
  357. static UsbK_SelectInterface_T* pUsbK_SelectInterface = NULL;
  358. static UsbK_GetAssociatedInterface_T* pUsbK_GetAssociatedInterface = NULL;
  359. static UsbK_Clone_T* pUsbK_Clone = NULL;
  360. static UsbK_QueryInterfaceSettings_T* pUsbK_QueryInterfaceSettings = NULL;
  361. static UsbK_QueryDeviceInformation_T* pUsbK_QueryDeviceInformation = NULL;
  362. static UsbK_SetCurrentAlternateSetting_T* pUsbK_SetCurrentAlternateSetting = NULL;
  363. static UsbK_GetCurrentAlternateSetting_T* pUsbK_GetCurrentAlternateSetting = NULL;
  364. static UsbK_QueryPipe_T* pUsbK_QueryPipe = NULL;
  365. static UsbK_SetPipePolicy_T* pUsbK_SetPipePolicy = NULL;
  366. static UsbK_GetPipePolicy_T* pUsbK_GetPipePolicy = NULL;
  367. static UsbK_ReadPipe_T* pUsbK_ReadPipe = NULL;
  368. static UsbK_WritePipe_T* pUsbK_WritePipe = NULL;
  369. static UsbK_ResetPipe_T* pUsbK_ResetPipe = NULL;
  370. static UsbK_AbortPipe_T* pUsbK_AbortPipe = NULL;
  371. static UsbK_FlushPipe_T* pUsbK_FlushPipe = NULL;
  372. static UsbK_IsoReadPipe_T* pUsbK_IsoReadPipe = NULL;
  373. static UsbK_IsoWritePipe_T* pUsbK_IsoWritePipe = NULL;
  374. static UsbK_GetCurrentFrameNumber_T* pUsbK_GetCurrentFrameNumber = NULL;
  375. static UsbK_GetOverlappedResult_T* pUsbK_GetOverlappedResult = NULL;
  376. static UsbK_GetProperty_T* pUsbK_GetProperty = NULL;
  377. static LstK_Init_T* pLstK_Init = NULL;
  378. static LstK_InitEx_T* pLstK_InitEx = NULL;
  379. static LstK_Free_T* pLstK_Free = NULL;
  380. static LstK_Enumerate_T* pLstK_Enumerate = NULL;
  381. static LstK_Current_T* pLstK_Current = NULL;
  382. static LstK_MoveNext_T* pLstK_MoveNext = NULL;
  383. static LstK_MoveReset_T* pLstK_MoveReset = NULL;
  384. static LstK_FindByVidPid_T* pLstK_FindByVidPid = NULL;
  385. static LstK_Count_T* pLstK_Count = NULL;
  386. static HotK_Init_T* pHotK_Init = NULL;
  387. static HotK_Free_T* pHotK_Free = NULL;
  388. static HotK_FreeAll_T* pHotK_FreeAll = NULL;
  389. static OvlK_Acquire_T* pOvlK_Acquire = NULL;
  390. static OvlK_Release_T* pOvlK_Release = NULL;
  391. static OvlK_Init_T* pOvlK_Init = NULL;
  392. static OvlK_Free_T* pOvlK_Free = NULL;
  393. static OvlK_GetEventHandle_T* pOvlK_GetEventHandle = NULL;
  394. static OvlK_Wait_T* pOvlK_Wait = NULL;
  395. static OvlK_WaitOldest_T* pOvlK_WaitOldest = NULL;
  396. static OvlK_WaitOrCancel_T* pOvlK_WaitOrCancel = NULL;
  397. static OvlK_WaitAndRelease_T* pOvlK_WaitAndRelease = NULL;
  398. static OvlK_IsComplete_T* pOvlK_IsComplete = NULL;
  399. static OvlK_ReUse_T* pOvlK_ReUse = NULL;
  400. static StmK_Init_T* pStmK_Init = NULL;
  401. static StmK_Free_T* pStmK_Free = NULL;
  402. static StmK_Start_T* pStmK_Start = NULL;
  403. static StmK_Stop_T* pStmK_Stop = NULL;
  404. static StmK_Read_T* pStmK_Read = NULL;
  405. static StmK_Write_T* pStmK_Write = NULL;
  406. static IsoK_Init_T* pIsoK_Init = NULL;
  407. static IsoK_Free_T* pIsoK_Free = NULL;
  408. static IsoK_SetPackets_T* pIsoK_SetPackets = NULL;
  409. static IsoK_SetPacket_T* pIsoK_SetPacket = NULL;
  410. static IsoK_GetPacket_T* pIsoK_GetPacket = NULL;
  411. static IsoK_EnumPackets_T* pIsoK_EnumPackets = NULL;
  412. static IsoK_ReUse_T* pIsoK_ReUse = NULL;
  413. ///////////////////////////////////////////////////////////////////////
  414. VOID LibusbK_DynApi_Free(VOID)
  415. {
  416. if (mLibusbK_ModuleHandle)
  417. {
  418. mFreeLibrary(mLibusbK_ModuleHandle);
  419. mLibusbK_ModuleHandle = NULL;
  420. // Set all function pointers to null:
  421. pLibK_GetVersion = NULL;
  422. pLibK_GetContext = NULL;
  423. pLibK_SetContext = NULL;
  424. pLibK_SetCleanupCallback = NULL;
  425. pLibK_LoadDriverAPI = NULL;
  426. pLibK_CopyDriverAPI = NULL;
  427. pLibK_GetProcAddress = NULL;
  428. pLibK_SetDefaultContext = NULL;
  429. pLibK_GetDefaultContext = NULL;
  430. pLibK_Context_Init = NULL;
  431. pLibK_Context_Free = NULL;
  432. pUsbK_Init = NULL;
  433. pUsbK_Free = NULL;
  434. pUsbK_ClaimInterface = NULL;
  435. pUsbK_ReleaseInterface = NULL;
  436. pUsbK_SetAltInterface = NULL;
  437. pUsbK_GetAltInterface = NULL;
  438. pUsbK_GetDescriptor = NULL;
  439. pUsbK_ControlTransfer = NULL;
  440. pUsbK_SetPowerPolicy = NULL;
  441. pUsbK_GetPowerPolicy = NULL;
  442. pUsbK_SetConfiguration = NULL;
  443. pUsbK_GetConfiguration = NULL;
  444. pUsbK_ResetDevice = NULL;
  445. pUsbK_Initialize = NULL;
  446. pUsbK_SelectInterface = NULL;
  447. pUsbK_GetAssociatedInterface = NULL;
  448. pUsbK_Clone = NULL;
  449. pUsbK_QueryInterfaceSettings = NULL;
  450. pUsbK_QueryDeviceInformation = NULL;
  451. pUsbK_SetCurrentAlternateSetting = NULL;
  452. pUsbK_GetCurrentAlternateSetting = NULL;
  453. pUsbK_QueryPipe = NULL;
  454. pUsbK_SetPipePolicy = NULL;
  455. pUsbK_GetPipePolicy = NULL;
  456. pUsbK_ReadPipe = NULL;
  457. pUsbK_WritePipe = NULL;
  458. pUsbK_ResetPipe = NULL;
  459. pUsbK_AbortPipe = NULL;
  460. pUsbK_FlushPipe = NULL;
  461. pUsbK_IsoReadPipe = NULL;
  462. pUsbK_IsoWritePipe = NULL;
  463. pUsbK_GetCurrentFrameNumber = NULL;
  464. pUsbK_GetOverlappedResult = NULL;
  465. pUsbK_GetProperty = NULL;
  466. pLstK_Init = NULL;
  467. pLstK_InitEx = NULL;
  468. pLstK_Free = NULL;
  469. pLstK_Enumerate = NULL;
  470. pLstK_Current = NULL;
  471. pLstK_MoveNext = NULL;
  472. pLstK_MoveReset = NULL;
  473. pLstK_FindByVidPid = NULL;
  474. pLstK_Count = NULL;
  475. pHotK_Init = NULL;
  476. pHotK_Free = NULL;
  477. pHotK_FreeAll = NULL;
  478. pOvlK_Acquire = NULL;
  479. pOvlK_Release = NULL;
  480. pOvlK_Init = NULL;
  481. pOvlK_Free = NULL;
  482. pOvlK_GetEventHandle = NULL;
  483. pOvlK_Wait = NULL;
  484. pOvlK_WaitOldest = NULL;
  485. pOvlK_WaitOrCancel = NULL;
  486. pOvlK_WaitAndRelease = NULL;
  487. pOvlK_IsComplete = NULL;
  488. pOvlK_ReUse = NULL;
  489. pStmK_Init = NULL;
  490. pStmK_Free = NULL;
  491. pStmK_Start = NULL;
  492. pStmK_Stop = NULL;
  493. pStmK_Read = NULL;
  494. pStmK_Write = NULL;
  495. pIsoK_Init = NULL;
  496. pIsoK_Free = NULL;
  497. pIsoK_SetPackets = NULL;
  498. pIsoK_SetPacket = NULL;
  499. pIsoK_GetPacket = NULL;
  500. pIsoK_EnumPackets = NULL;
  501. pIsoK_ReUse = NULL;
  502. ///////////////////////////////////////////////////////////////////////
  503. }
  504. }
  505. INT LibusbK_DynApi_Init(_inopt LPCSTR DllFullPathName)
  506. {
  507. LPCSTR dllFullPathName = (DllFullPathName == NULL) ? "libusbK.dll" : DllFullPathName;
  508. INT funcLoadFailCount = 0;
  509. if (mLibusbK_ModuleHandle) LibusbK_DynApi_Free();
  510. if (DllFullPathName)
  511. mLibusbK_ModuleHandle = mLoadLibraryExA(dllFullPathName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
  512. else
  513. mLibusbK_ModuleHandle = mLoadLibraryExA(dllFullPathName, NULL, 0);
  514. if (mLibusbK_ModuleHandle == NULL) return -1;
  515. // Function loads:
  516. if ((pLibK_GetVersion = (LibK_GetVersion_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_GetVersion")) == NULL)
  517. {
  518. funcLoadFailCount++;
  519. OutputDebugStringA("Failed loading function LibK_GetVersion.\n");
  520. }
  521. if ((pLibK_GetContext = (LibK_GetContext_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_GetContext")) == NULL)
  522. {
  523. funcLoadFailCount++;
  524. OutputDebugStringA("Failed loading function LibK_GetContext.\n");
  525. }
  526. if ((pLibK_SetContext = (LibK_SetContext_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_SetContext")) == NULL)
  527. {
  528. funcLoadFailCount++;
  529. OutputDebugStringA("Failed loading function LibK_SetContext.\n");
  530. }
  531. if ((pLibK_SetCleanupCallback = (LibK_SetCleanupCallback_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_SetCleanupCallback")) == NULL)
  532. {
  533. funcLoadFailCount++;
  534. OutputDebugStringA("Failed loading function LibK_SetCleanupCallback.\n");
  535. }
  536. if ((pLibK_LoadDriverAPI = (LibK_LoadDriverAPI_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_LoadDriverAPI")) == NULL)
  537. {
  538. funcLoadFailCount++;
  539. OutputDebugStringA("Failed loading function LibK_LoadDriverAPI.\n");
  540. }
  541. if ((pLibK_CopyDriverAPI = (LibK_CopyDriverAPI_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_CopyDriverAPI")) == NULL)
  542. {
  543. funcLoadFailCount++;
  544. OutputDebugStringA("Failed loading function LibK_CopyDriverAPI.\n");
  545. }
  546. if ((pLibK_GetProcAddress = (LibK_GetProcAddress_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_GetProcAddress")) == NULL)
  547. {
  548. funcLoadFailCount++;
  549. OutputDebugStringA("Failed loading function LibK_GetProcAddress.\n");
  550. }
  551. if ((pLibK_SetDefaultContext = (LibK_SetDefaultContext_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_SetDefaultContext")) == NULL)
  552. {
  553. funcLoadFailCount++;
  554. OutputDebugStringA("Failed loading function LibK_SetDefaultContext.\n");
  555. }
  556. if ((pLibK_GetDefaultContext = (LibK_GetDefaultContext_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_GetDefaultContext")) == NULL)
  557. {
  558. funcLoadFailCount++;
  559. OutputDebugStringA("Failed loading function LibK_GetDefaultContext.\n");
  560. }
  561. if ((pLibK_Context_Init = (LibK_Context_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_Context_Init")) == NULL)
  562. {
  563. funcLoadFailCount++;
  564. OutputDebugStringA("Failed loading function LibK_Context_Init.\n");
  565. }
  566. if ((pLibK_Context_Free = (LibK_Context_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "LibK_Context_Free")) == NULL)
  567. {
  568. funcLoadFailCount++;
  569. OutputDebugStringA("Failed loading function LibK_Context_Free.\n");
  570. }
  571. if ((pUsbK_Init = (UsbK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_Init")) == NULL)
  572. {
  573. funcLoadFailCount++;
  574. OutputDebugStringA("Failed loading function UsbK_Init.\n");
  575. }
  576. if ((pUsbK_Free = (UsbK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_Free")) == NULL)
  577. {
  578. funcLoadFailCount++;
  579. OutputDebugStringA("Failed loading function UsbK_Free.\n");
  580. }
  581. if ((pUsbK_ClaimInterface = (UsbK_ClaimInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ClaimInterface")) == NULL)
  582. {
  583. funcLoadFailCount++;
  584. OutputDebugStringA("Failed loading function UsbK_ClaimInterface.\n");
  585. }
  586. if ((pUsbK_ReleaseInterface = (UsbK_ReleaseInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ReleaseInterface")) == NULL)
  587. {
  588. funcLoadFailCount++;
  589. OutputDebugStringA("Failed loading function UsbK_ReleaseInterface.\n");
  590. }
  591. if ((pUsbK_SetAltInterface = (UsbK_SetAltInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SetAltInterface")) == NULL)
  592. {
  593. funcLoadFailCount++;
  594. OutputDebugStringA("Failed loading function UsbK_SetAltInterface.\n");
  595. }
  596. if ((pUsbK_GetAltInterface = (UsbK_GetAltInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetAltInterface")) == NULL)
  597. {
  598. funcLoadFailCount++;
  599. OutputDebugStringA("Failed loading function UsbK_GetAltInterface.\n");
  600. }
  601. if ((pUsbK_GetDescriptor = (UsbK_GetDescriptor_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetDescriptor")) == NULL)
  602. {
  603. funcLoadFailCount++;
  604. OutputDebugStringA("Failed loading function UsbK_GetDescriptor.\n");
  605. }
  606. if ((pUsbK_ControlTransfer = (UsbK_ControlTransfer_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ControlTransfer")) == NULL)
  607. {
  608. funcLoadFailCount++;
  609. OutputDebugStringA("Failed loading function UsbK_ControlTransfer.\n");
  610. }
  611. if ((pUsbK_SetPowerPolicy = (UsbK_SetPowerPolicy_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SetPowerPolicy")) == NULL)
  612. {
  613. funcLoadFailCount++;
  614. OutputDebugStringA("Failed loading function UsbK_SetPowerPolicy.\n");
  615. }
  616. if ((pUsbK_GetPowerPolicy = (UsbK_GetPowerPolicy_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetPowerPolicy")) == NULL)
  617. {
  618. funcLoadFailCount++;
  619. OutputDebugStringA("Failed loading function UsbK_GetPowerPolicy.\n");
  620. }
  621. if ((pUsbK_SetConfiguration = (UsbK_SetConfiguration_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SetConfiguration")) == NULL)
  622. {
  623. funcLoadFailCount++;
  624. OutputDebugStringA("Failed loading function UsbK_SetConfiguration.\n");
  625. }
  626. if ((pUsbK_GetConfiguration = (UsbK_GetConfiguration_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetConfiguration")) == NULL)
  627. {
  628. funcLoadFailCount++;
  629. OutputDebugStringA("Failed loading function UsbK_GetConfiguration.\n");
  630. }
  631. if ((pUsbK_ResetDevice = (UsbK_ResetDevice_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ResetDevice")) == NULL)
  632. {
  633. funcLoadFailCount++;
  634. OutputDebugStringA("Failed loading function UsbK_ResetDevice.\n");
  635. }
  636. if ((pUsbK_Initialize = (UsbK_Initialize_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_Initialize")) == NULL)
  637. {
  638. funcLoadFailCount++;
  639. OutputDebugStringA("Failed loading function UsbK_Initialize.\n");
  640. }
  641. if ((pUsbK_SelectInterface = (UsbK_SelectInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SelectInterface")) == NULL)
  642. {
  643. funcLoadFailCount++;
  644. OutputDebugStringA("Failed loading function UsbK_SelectInterface.\n");
  645. }
  646. if ((pUsbK_GetAssociatedInterface = (UsbK_GetAssociatedInterface_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetAssociatedInterface")) == NULL)
  647. {
  648. funcLoadFailCount++;
  649. OutputDebugStringA("Failed loading function UsbK_GetAssociatedInterface.\n");
  650. }
  651. if ((pUsbK_Clone = (UsbK_Clone_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_Clone")) == NULL)
  652. {
  653. funcLoadFailCount++;
  654. OutputDebugStringA("Failed loading function UsbK_Clone.\n");
  655. }
  656. if ((pUsbK_QueryInterfaceSettings = (UsbK_QueryInterfaceSettings_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_QueryInterfaceSettings")) == NULL)
  657. {
  658. funcLoadFailCount++;
  659. OutputDebugStringA("Failed loading function UsbK_QueryInterfaceSettings.\n");
  660. }
  661. if ((pUsbK_QueryDeviceInformation = (UsbK_QueryDeviceInformation_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_QueryDeviceInformation")) == NULL)
  662. {
  663. funcLoadFailCount++;
  664. OutputDebugStringA("Failed loading function UsbK_QueryDeviceInformation.\n");
  665. }
  666. if ((pUsbK_SetCurrentAlternateSetting = (UsbK_SetCurrentAlternateSetting_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SetCurrentAlternateSetting")) == NULL)
  667. {
  668. funcLoadFailCount++;
  669. OutputDebugStringA("Failed loading function UsbK_SetCurrentAlternateSetting.\n");
  670. }
  671. if ((pUsbK_GetCurrentAlternateSetting = (UsbK_GetCurrentAlternateSetting_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetCurrentAlternateSetting")) == NULL)
  672. {
  673. funcLoadFailCount++;
  674. OutputDebugStringA("Failed loading function UsbK_GetCurrentAlternateSetting.\n");
  675. }
  676. if ((pUsbK_QueryPipe = (UsbK_QueryPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_QueryPipe")) == NULL)
  677. {
  678. funcLoadFailCount++;
  679. OutputDebugStringA("Failed loading function UsbK_QueryPipe.\n");
  680. }
  681. if ((pUsbK_SetPipePolicy = (UsbK_SetPipePolicy_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_SetPipePolicy")) == NULL)
  682. {
  683. funcLoadFailCount++;
  684. OutputDebugStringA("Failed loading function UsbK_SetPipePolicy.\n");
  685. }
  686. if ((pUsbK_GetPipePolicy = (UsbK_GetPipePolicy_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetPipePolicy")) == NULL)
  687. {
  688. funcLoadFailCount++;
  689. OutputDebugStringA("Failed loading function UsbK_GetPipePolicy.\n");
  690. }
  691. if ((pUsbK_ReadPipe = (UsbK_ReadPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ReadPipe")) == NULL)
  692. {
  693. funcLoadFailCount++;
  694. OutputDebugStringA("Failed loading function UsbK_ReadPipe.\n");
  695. }
  696. if ((pUsbK_WritePipe = (UsbK_WritePipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_WritePipe")) == NULL)
  697. {
  698. funcLoadFailCount++;
  699. OutputDebugStringA("Failed loading function UsbK_WritePipe.\n");
  700. }
  701. if ((pUsbK_ResetPipe = (UsbK_ResetPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_ResetPipe")) == NULL)
  702. {
  703. funcLoadFailCount++;
  704. OutputDebugStringA("Failed loading function UsbK_ResetPipe.\n");
  705. }
  706. if ((pUsbK_AbortPipe = (UsbK_AbortPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_AbortPipe")) == NULL)
  707. {
  708. funcLoadFailCount++;
  709. OutputDebugStringA("Failed loading function UsbK_AbortPipe.\n");
  710. }
  711. if ((pUsbK_FlushPipe = (UsbK_FlushPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_FlushPipe")) == NULL)
  712. {
  713. funcLoadFailCount++;
  714. OutputDebugStringA("Failed loading function UsbK_FlushPipe.\n");
  715. }
  716. if ((pUsbK_IsoReadPipe = (UsbK_IsoReadPipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_IsoReadPipe")) == NULL)
  717. {
  718. funcLoadFailCount++;
  719. OutputDebugStringA("Failed loading function UsbK_IsoReadPipe.\n");
  720. }
  721. if ((pUsbK_IsoWritePipe = (UsbK_IsoWritePipe_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_IsoWritePipe")) == NULL)
  722. {
  723. funcLoadFailCount++;
  724. OutputDebugStringA("Failed loading function UsbK_IsoWritePipe.\n");
  725. }
  726. if ((pUsbK_GetCurrentFrameNumber = (UsbK_GetCurrentFrameNumber_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetCurrentFrameNumber")) == NULL)
  727. {
  728. funcLoadFailCount++;
  729. OutputDebugStringA("Failed loading function UsbK_GetCurrentFrameNumber.\n");
  730. }
  731. if ((pUsbK_GetOverlappedResult = (UsbK_GetOverlappedResult_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetOverlappedResult")) == NULL)
  732. {
  733. funcLoadFailCount++;
  734. OutputDebugStringA("Failed loading function UsbK_GetOverlappedResult.\n");
  735. }
  736. if ((pUsbK_GetProperty = (UsbK_GetProperty_T*)GetProcAddress(mLibusbK_ModuleHandle, "UsbK_GetProperty")) == NULL)
  737. {
  738. funcLoadFailCount++;
  739. OutputDebugStringA("Failed loading function UsbK_GetProperty.\n");
  740. }
  741. if ((pLstK_Init = (LstK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_Init")) == NULL)
  742. {
  743. funcLoadFailCount++;
  744. OutputDebugStringA("Failed loading function LstK_Init.\n");
  745. }
  746. if ((pLstK_InitEx = (LstK_InitEx_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_InitEx")) == NULL)
  747. {
  748. funcLoadFailCount++;
  749. OutputDebugStringA("Failed loading function LstK_InitEx.\n");
  750. }
  751. if ((pLstK_Free = (LstK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_Free")) == NULL)
  752. {
  753. funcLoadFailCount++;
  754. OutputDebugStringA("Failed loading function LstK_Free.\n");
  755. }
  756. if ((pLstK_Enumerate = (LstK_Enumerate_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_Enumerate")) == NULL)
  757. {
  758. funcLoadFailCount++;
  759. OutputDebugStringA("Failed loading function LstK_Enumerate.\n");
  760. }
  761. if ((pLstK_Current = (LstK_Current_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_Current")) == NULL)
  762. {
  763. funcLoadFailCount++;
  764. OutputDebugStringA("Failed loading function LstK_Current.\n");
  765. }
  766. if ((pLstK_MoveNext = (LstK_MoveNext_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_MoveNext")) == NULL)
  767. {
  768. funcLoadFailCount++;
  769. OutputDebugStringA("Failed loading function LstK_MoveNext.\n");
  770. }
  771. if ((pLstK_MoveReset = (LstK_MoveReset_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_MoveReset")) == NULL)
  772. {
  773. funcLoadFailCount++;
  774. OutputDebugStringA("Failed loading function LstK_MoveReset.\n");
  775. }
  776. if ((pLstK_FindByVidPid = (LstK_FindByVidPid_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_FindByVidPid")) == NULL)
  777. {
  778. funcLoadFailCount++;
  779. OutputDebugStringA("Failed loading function LstK_FindByVidPid.\n");
  780. }
  781. if ((pLstK_Count = (LstK_Count_T*)GetProcAddress(mLibusbK_ModuleHandle, "LstK_Count")) == NULL)
  782. {
  783. funcLoadFailCount++;
  784. OutputDebugStringA("Failed loading function LstK_Count.\n");
  785. }
  786. if ((pHotK_Init = (HotK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "HotK_Init")) == NULL)
  787. {
  788. funcLoadFailCount++;
  789. OutputDebugStringA("Failed loading function HotK_Init.\n");
  790. }
  791. if ((pHotK_Free = (HotK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "HotK_Free")) == NULL)
  792. {
  793. funcLoadFailCount++;
  794. OutputDebugStringA("Failed loading function HotK_Free.\n");
  795. }
  796. if ((pHotK_FreeAll = (HotK_FreeAll_T*)GetProcAddress(mLibusbK_ModuleHandle, "HotK_FreeAll")) == NULL)
  797. {
  798. funcLoadFailCount++;
  799. OutputDebugStringA("Failed loading function HotK_FreeAll.\n");
  800. }
  801. if ((pOvlK_Acquire = (OvlK_Acquire_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_Acquire")) == NULL)
  802. {
  803. funcLoadFailCount++;
  804. OutputDebugStringA("Failed loading function OvlK_Acquire.\n");
  805. }
  806. if ((pOvlK_Release = (OvlK_Release_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_Release")) == NULL)
  807. {
  808. funcLoadFailCount++;
  809. OutputDebugStringA("Failed loading function OvlK_Release.\n");
  810. }
  811. if ((pOvlK_Init = (OvlK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_Init")) == NULL)
  812. {
  813. funcLoadFailCount++;
  814. OutputDebugStringA("Failed loading function OvlK_Init.\n");
  815. }
  816. if ((pOvlK_Free = (OvlK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_Free")) == NULL)
  817. {
  818. funcLoadFailCount++;
  819. OutputDebugStringA("Failed loading function OvlK_Free.\n");
  820. }
  821. if ((pOvlK_GetEventHandle = (OvlK_GetEventHandle_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_GetEventHandle")) == NULL)
  822. {
  823. funcLoadFailCount++;
  824. OutputDebugStringA("Failed loading function OvlK_GetEventHandle.\n");
  825. }
  826. if ((pOvlK_Wait = (OvlK_Wait_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_Wait")) == NULL)
  827. {
  828. funcLoadFailCount++;
  829. OutputDebugStringA("Failed loading function OvlK_Wait.\n");
  830. }
  831. if ((pOvlK_WaitOldest = (OvlK_WaitOldest_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_WaitOldest")) == NULL)
  832. {
  833. funcLoadFailCount++;
  834. OutputDebugStringA("Failed loading function OvlK_WaitOldest.\n");
  835. }
  836. if ((pOvlK_WaitOrCancel = (OvlK_WaitOrCancel_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_WaitOrCancel")) == NULL)
  837. {
  838. funcLoadFailCount++;
  839. OutputDebugStringA("Failed loading function OvlK_WaitOrCancel.\n");
  840. }
  841. if ((pOvlK_WaitAndRelease = (OvlK_WaitAndRelease_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_WaitAndRelease")) == NULL)
  842. {
  843. funcLoadFailCount++;
  844. OutputDebugStringA("Failed loading function OvlK_WaitAndRelease.\n");
  845. }
  846. if ((pOvlK_IsComplete = (OvlK_IsComplete_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_IsComplete")) == NULL)
  847. {
  848. funcLoadFailCount++;
  849. OutputDebugStringA("Failed loading function OvlK_IsComplete.\n");
  850. }
  851. if ((pOvlK_ReUse = (OvlK_ReUse_T*)GetProcAddress(mLibusbK_ModuleHandle, "OvlK_ReUse")) == NULL)
  852. {
  853. funcLoadFailCount++;
  854. OutputDebugStringA("Failed loading function OvlK_ReUse.\n");
  855. }
  856. if ((pStmK_Init = (StmK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Init")) == NULL)
  857. {
  858. funcLoadFailCount++;
  859. OutputDebugStringA("Failed loading function StmK_Init.\n");
  860. }
  861. if ((pStmK_Free = (StmK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Free")) == NULL)
  862. {
  863. funcLoadFailCount++;
  864. OutputDebugStringA("Failed loading function StmK_Free.\n");
  865. }
  866. if ((pStmK_Start = (StmK_Start_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Start")) == NULL)
  867. {
  868. funcLoadFailCount++;
  869. OutputDebugStringA("Failed loading function StmK_Start.\n");
  870. }
  871. if ((pStmK_Stop = (StmK_Stop_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Stop")) == NULL)
  872. {
  873. funcLoadFailCount++;
  874. OutputDebugStringA("Failed loading function StmK_Stop.\n");
  875. }
  876. if ((pStmK_Read = (StmK_Read_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Read")) == NULL)
  877. {
  878. funcLoadFailCount++;
  879. OutputDebugStringA("Failed loading function StmK_Read.\n");
  880. }
  881. if ((pStmK_Write = (StmK_Write_T*)GetProcAddress(mLibusbK_ModuleHandle, "StmK_Write")) == NULL)
  882. {
  883. funcLoadFailCount++;
  884. OutputDebugStringA("Failed loading function StmK_Write.\n");
  885. }
  886. if ((pIsoK_Init = (IsoK_Init_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_Init")) == NULL)
  887. {
  888. funcLoadFailCount++;
  889. OutputDebugStringA("Failed loading function IsoK_Init.\n");
  890. }
  891. if ((pIsoK_Free = (IsoK_Free_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_Free")) == NULL)
  892. {
  893. funcLoadFailCount++;
  894. OutputDebugStringA("Failed loading function IsoK_Free.\n");
  895. }
  896. if ((pIsoK_SetPackets = (IsoK_SetPackets_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_SetPackets")) == NULL)
  897. {
  898. funcLoadFailCount++;
  899. OutputDebugStringA("Failed loading function IsoK_SetPackets.\n");
  900. }
  901. if ((pIsoK_SetPacket = (IsoK_SetPacket_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_SetPacket")) == NULL)
  902. {
  903. funcLoadFailCount++;
  904. OutputDebugStringA("Failed loading function IsoK_SetPacket.\n");
  905. }
  906. if ((pIsoK_GetPacket = (IsoK_GetPacket_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_GetPacket")) == NULL)
  907. {
  908. funcLoadFailCount++;
  909. OutputDebugStringA("Failed loading function IsoK_GetPacket.\n");
  910. }
  911. if ((pIsoK_EnumPackets = (IsoK_EnumPackets_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_EnumPackets")) == NULL)
  912. {
  913. funcLoadFailCount++;
  914. OutputDebugStringA("Failed loading function IsoK_EnumPackets.\n");
  915. }
  916. if ((pIsoK_ReUse = (IsoK_ReUse_T*)GetProcAddress(mLibusbK_ModuleHandle, "IsoK_ReUse")) == NULL)
  917. {
  918. funcLoadFailCount++;
  919. OutputDebugStringA("Failed loading function IsoK_ReUse.\n");
  920. }
  921. ///////////////////////////////////////////////////////////////////////
  922. return funcLoadFailCount;
  923. }
  924. // Function wrappers:
  925. KUSB_EXP VOID KUSB_API LibK_GetVersion(_out PKLIB_VERSION Version)
  926. {
  927. pLibK_GetVersion(Version);
  928. }
  929. KUSB_EXP KLIB_USER_CONTEXT KUSB_API LibK_GetContext(
  930. _in KLIB_HANDLE Handle,
  931. _in KLIB_HANDLE_TYPE HandleType)
  932. {
  933. return pLibK_GetContext(Handle, HandleType);
  934. }
  935. KUSB_EXP BOOL KUSB_API LibK_SetContext(
  936. _in KLIB_HANDLE Handle,
  937. _in KLIB_HANDLE_TYPE HandleType,
  938. _in KLIB_USER_CONTEXT ContextValue)
  939. {
  940. return pLibK_SetContext(Handle, HandleType, ContextValue);
  941. }
  942. KUSB_EXP BOOL KUSB_API LibK_SetCleanupCallback(
  943. _in KLIB_HANDLE Handle,
  944. _in KLIB_HANDLE_TYPE HandleType,
  945. _in KLIB_HANDLE_CLEANUP_CB* CleanupCB)
  946. {
  947. return pLibK_SetCleanupCallback(Handle, HandleType, CleanupCB);
  948. }
  949. KUSB_EXP BOOL KUSB_API LibK_LoadDriverAPI(
  950. _out PKUSB_DRIVER_API DriverAPI,
  951. _in INT DriverID)
  952. {
  953. return pLibK_LoadDriverAPI(DriverAPI, DriverID);
  954. }
  955. KUSB_EXP BOOL KUSB_API LibK_CopyDriverAPI(
  956. _out PKUSB_DRIVER_API DriverAPI,
  957. _in KUSB_HANDLE UsbHandle)
  958. {
  959. return pLibK_CopyDriverAPI(DriverAPI, UsbHandle);
  960. }
  961. KUSB_EXP BOOL KUSB_API LibK_GetProcAddress(
  962. _out KPROC* ProcAddress,
  963. _in INT DriverID,
  964. _in INT FunctionID)
  965. {
  966. return pLibK_GetProcAddress(ProcAddress, DriverID, FunctionID);
  967. }
  968. KUSB_EXP BOOL KUSB_API LibK_SetDefaultContext(
  969. _in KLIB_HANDLE_TYPE HandleType,
  970. _in KLIB_USER_CONTEXT ContextValue)
  971. {
  972. return pLibK_SetDefaultContext(HandleType, ContextValue);
  973. }
  974. KUSB_EXP KLIB_USER_CONTEXT KUSB_API LibK_GetDefaultContext(
  975. _in KLIB_HANDLE_TYPE HandleType)
  976. {
  977. return pLibK_GetDefaultContext(HandleType);
  978. }
  979. KUSB_EXP BOOL KUSB_API LibK_Context_Init(
  980. _inopt HANDLE Heap,
  981. _in PVOID Reserved)
  982. {
  983. return pLibK_Context_Init(Heap, Reserved);
  984. }
  985. KUSB_EXP VOID KUSB_API LibK_Context_Free(VOID)
  986. {
  987. pLibK_Context_Free();
  988. }
  989. KUSB_EXP BOOL KUSB_API UsbK_Init (
  990. _out KUSB_HANDLE* InterfaceHandle,
  991. _in KLST_DEVINFO_HANDLE DevInfo)
  992. {
  993. return pUsbK_Init(InterfaceHandle, DevInfo);
  994. }
  995. KUSB_EXP BOOL KUSB_API UsbK_Free (
  996. _in KUSB_HANDLE InterfaceHandle)
  997. {
  998. return pUsbK_Free(InterfaceHandle);
  999. }
  1000. KUSB_EXP BOOL KUSB_API UsbK_ClaimInterface (
  1001. _in KUSB_HANDLE InterfaceHandle,
  1002. _in UCHAR NumberOrIndex,
  1003. _in BOOL IsIndex)
  1004. {
  1005. return pUsbK_ClaimInterface(InterfaceHandle, NumberOrIndex, IsIndex);
  1006. }
  1007. KUSB_EXP BOOL KUSB_API UsbK_ReleaseInterface (
  1008. _in KUSB_HANDLE InterfaceHandle,
  1009. _in UCHAR NumberOrIndex,
  1010. _in BOOL IsIndex)
  1011. {
  1012. return pUsbK_ReleaseInterface(InterfaceHandle, NumberOrIndex, IsIndex);
  1013. }
  1014. KUSB_EXP BOOL KUSB_API UsbK_SetAltInterface (
  1015. _in KUSB_HANDLE InterfaceHandle,
  1016. _in UCHAR NumberOrIndex,
  1017. _in BOOL IsIndex,
  1018. _in UCHAR AltSettingNumber)
  1019. {
  1020. return pUsbK_SetAltInterface(InterfaceHandle, NumberOrIndex, IsIndex, AltSettingNumber);
  1021. }
  1022. KUSB_EXP BOOL KUSB_API UsbK_GetAltInterface (
  1023. _in KUSB_HANDLE InterfaceHandle,
  1024. _in UCHAR NumberOrIndex,
  1025. _in BOOL IsIndex,
  1026. _out PUCHAR AltSettingNumber)
  1027. {
  1028. return pUsbK_GetAltInterface(InterfaceHandle, NumberOrIndex, IsIndex, AltSettingNumber);
  1029. }
  1030. KUSB_EXP BOOL KUSB_API UsbK_GetDescriptor (
  1031. _in KUSB_HANDLE InterfaceHandle,
  1032. _in UCHAR DescriptorType,
  1033. _in UCHAR Index,
  1034. _in USHORT LanguageID,
  1035. _out PUCHAR Buffer,
  1036. _in UINT BufferLength,
  1037. _outopt PUINT LengthTransferred)
  1038. {
  1039. return pUsbK_GetDescriptor(InterfaceHandle, DescriptorType, Index, LanguageID, Buffer, BufferLength, LengthTransferred);
  1040. }
  1041. KUSB_EXP BOOL KUSB_API UsbK_ControlTransfer (
  1042. _in KUSB_HANDLE InterfaceHandle,
  1043. _in WINUSB_SETUP_PACKET SetupPacket,
  1044. _refopt PUCHAR Buffer,
  1045. _in UINT BufferLength,
  1046. _outopt PUINT LengthTransferred,
  1047. _inopt LPOVERLAPPED Overlapped)
  1048. {
  1049. return pUsbK_ControlTransfer(InterfaceHandle, SetupPacket, Buffer, BufferLength, LengthTransferred, Overlapped);
  1050. }
  1051. KUSB_EXP BOOL KUSB_API UsbK_SetPowerPolicy (
  1052. _in KUSB_HANDLE InterfaceHandle,
  1053. _in UINT PolicyType,
  1054. _in UINT ValueLength,
  1055. _in PVOID Value)
  1056. {
  1057. return pUsbK_SetPowerPolicy(InterfaceHandle, PolicyType, ValueLength, Value);
  1058. }
  1059. KUSB_EXP BOOL KUSB_API UsbK_GetPowerPolicy (
  1060. _in KUSB_HANDLE InterfaceHandle,
  1061. _in UINT PolicyType,
  1062. _ref PUINT ValueLength,
  1063. _out PVOID Value)
  1064. {
  1065. return pUsbK_GetPowerPolicy(InterfaceHandle, PolicyType, ValueLength, Value);
  1066. }
  1067. KUSB_EXP BOOL KUSB_API UsbK_SetConfiguration (
  1068. _in KUSB_HANDLE InterfaceHandle,
  1069. _in UCHAR ConfigurationNumber)
  1070. {
  1071. return pUsbK_SetConfiguration(InterfaceHandle, ConfigurationNumber);
  1072. }
  1073. KUSB_EXP BOOL KUSB_API UsbK_GetConfiguration (
  1074. _in KUSB_HANDLE InterfaceHandle,
  1075. _out PUCHAR ConfigurationNumber)
  1076. {
  1077. return pUsbK_GetConfiguration(InterfaceHandle, ConfigurationNumber);
  1078. }
  1079. KUSB_EXP BOOL KUSB_API UsbK_ResetDevice (
  1080. _in KUSB_HANDLE InterfaceHandle)
  1081. {
  1082. return pUsbK_ResetDevice(InterfaceHandle);
  1083. }
  1084. KUSB_EXP BOOL KUSB_API UsbK_Initialize (
  1085. _in HANDLE DeviceHandle,
  1086. _out KUSB_HANDLE* InterfaceHandle)
  1087. {
  1088. return pUsbK_Initialize(DeviceHandle, InterfaceHandle);
  1089. }
  1090. KUSB_EXP BOOL KUSB_API UsbK_SelectInterface (
  1091. _in KUSB_HANDLE InterfaceHandle,
  1092. _in UCHAR NumberOrIndex,
  1093. _in BOOL IsIndex)
  1094. {
  1095. return pUsbK_SelectInterface(InterfaceHandle, NumberOrIndex, IsIndex);
  1096. }
  1097. KUSB_EXP BOOL KUSB_API UsbK_GetAssociatedInterface (
  1098. _in KUSB_HANDLE InterfaceHandle,
  1099. _in UCHAR AssociatedInterfaceIndex,
  1100. _out KUSB_HANDLE* AssociatedInterfaceHandle)
  1101. {
  1102. return pUsbK_GetAssociatedInterface(InterfaceHandle, AssociatedInterfaceIndex, AssociatedInterfaceHandle);
  1103. }
  1104. KUSB_EXP BOOL KUSB_API UsbK_Clone (
  1105. _in KUSB_HANDLE InterfaceHandle,
  1106. _out KUSB_HANDLE* DstInterfaceHandle)
  1107. {
  1108. return pUsbK_Clone(InterfaceHandle, DstInterfaceHandle);
  1109. }
  1110. KUSB_EXP BOOL KUSB_API UsbK_QueryInterfaceSettings (
  1111. _in KUSB_HANDLE InterfaceHandle,
  1112. _in UCHAR AltSettingIndex,
  1113. _out PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor)
  1114. {
  1115. return pUsbK_QueryInterfaceSettings(InterfaceHandle, AltSettingIndex, UsbAltInterfaceDescriptor);
  1116. }
  1117. KUSB_EXP BOOL KUSB_API UsbK_QueryDeviceInformation (
  1118. _in KUSB_HANDLE InterfaceHandle,
  1119. _in UINT InformationType,
  1120. _ref PUINT BufferLength,
  1121. _ref PVOID Buffer)
  1122. {
  1123. return pUsbK_QueryDeviceInformation(InterfaceHandle, InformationType, BufferLength, Buffer);
  1124. }
  1125. KUSB_EXP BOOL KUSB_API UsbK_SetCurrentAlternateSetting (
  1126. _in KUSB_HANDLE InterfaceHandle,
  1127. _in UCHAR AltSettingNumber)
  1128. {
  1129. return pUsbK_SetCurrentAlternateSetting(InterfaceHandle, AltSettingNumber);
  1130. }
  1131. KUSB_EXP BOOL KUSB_API UsbK_GetCurrentAlternateSetting (
  1132. _in KUSB_HANDLE InterfaceHandle,
  1133. _out PUCHAR AltSettingNumber)
  1134. {
  1135. return pUsbK_GetCurrentAlternateSetting(InterfaceHandle, AltSettingNumber);
  1136. }
  1137. KUSB_EXP BOOL KUSB_API UsbK_QueryPipe (
  1138. _in KUSB_HANDLE InterfaceHandle,
  1139. _in UCHAR AltSettingNumber,
  1140. _in UCHAR PipeIndex,
  1141. _out PWINUSB_PIPE_INFORMATION PipeInformation)
  1142. {
  1143. return pUsbK_QueryPipe(InterfaceHandle, AltSettingNumber, PipeIndex, PipeInformation);
  1144. }
  1145. KUSB_EXP BOOL KUSB_API UsbK_SetPipePolicy (
  1146. _in KUSB_HANDLE InterfaceHandle,
  1147. _in UCHAR PipeID,
  1148. _in UINT PolicyType,
  1149. _in UINT ValueLength,
  1150. _in PVOID Value)
  1151. {
  1152. return pUsbK_SetPipePolicy(InterfaceHandle, PipeID, PolicyType, ValueLength, Value);
  1153. }
  1154. KUSB_EXP BOOL KUSB_API UsbK_GetPipePolicy (
  1155. _in KUSB_HANDLE InterfaceHandle,
  1156. _in UCHAR PipeID,
  1157. _in UINT PolicyType,
  1158. _ref PUINT ValueLength,
  1159. _out PVOID Value)
  1160. {
  1161. return pUsbK_GetPipePolicy(InterfaceHandle, PipeID, PolicyType, ValueLength, Value);
  1162. }
  1163. KUSB_EXP BOOL KUSB_API UsbK_ReadPipe (
  1164. _in KUSB_HANDLE InterfaceHandle,
  1165. _in UCHAR PipeID,
  1166. _out PUCHAR Buffer,
  1167. _in UINT BufferLength,
  1168. _outopt PUINT LengthTransferred,
  1169. _inopt LPOVERLAPPED Overlapped)
  1170. {
  1171. return pUsbK_ReadPipe(InterfaceHandle, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped);
  1172. }
  1173. KUSB_EXP BOOL KUSB_API UsbK_WritePipe (
  1174. _in KUSB_HANDLE InterfaceHandle,
  1175. _in UCHAR PipeID,
  1176. _in PUCHAR Buffer,
  1177. _in UINT BufferLength,
  1178. _outopt PUINT LengthTransferred,
  1179. _inopt LPOVERLAPPED Overlapped)
  1180. {
  1181. return pUsbK_WritePipe(InterfaceHandle, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped);
  1182. }
  1183. KUSB_EXP BOOL KUSB_API UsbK_ResetPipe (
  1184. _in KUSB_HANDLE InterfaceHandle,
  1185. _in UCHAR PipeID)
  1186. {
  1187. return pUsbK_ResetPipe(InterfaceHandle, PipeID);
  1188. }
  1189. KUSB_EXP BOOL KUSB_API UsbK_AbortPipe (
  1190. _in KUSB_HANDLE InterfaceHandle,
  1191. _in UCHAR PipeID)
  1192. {
  1193. return pUsbK_AbortPipe(InterfaceHandle, PipeID);
  1194. }
  1195. KUSB_EXP BOOL KUSB_API UsbK_FlushPipe (
  1196. _in KUSB_HANDLE InterfaceHandle,
  1197. _in UCHAR PipeID)
  1198. {
  1199. return pUsbK_FlushPipe(InterfaceHandle, PipeID);
  1200. }
  1201. KUSB_EXP BOOL KUSB_API UsbK_IsoReadPipe (
  1202. _in KUSB_HANDLE InterfaceHandle,
  1203. _in UCHAR PipeID,
  1204. _out PUCHAR Buffer,
  1205. _in UINT BufferLength,
  1206. _in LPOVERLAPPED Overlapped,
  1207. _refopt PKISO_CONTEXT IsoContext)
  1208. {
  1209. return pUsbK_IsoReadPipe(InterfaceHandle, PipeID, Buffer, BufferLength, Overlapped, IsoContext);
  1210. }
  1211. KUSB_EXP BOOL KUSB_API UsbK_IsoWritePipe (
  1212. _in KUSB_HANDLE InterfaceHandle,
  1213. _in UCHAR PipeID,
  1214. _in PUCHAR Buffer,
  1215. _in UINT BufferLength,
  1216. _in LPOVERLAPPED Overlapped,
  1217. _refopt PKISO_CONTEXT IsoContext)
  1218. {
  1219. return pUsbK_IsoWritePipe(InterfaceHandle, PipeID, Buffer, BufferLength, Overlapped, IsoContext);
  1220. }
  1221. KUSB_EXP BOOL KUSB_API UsbK_GetCurrentFrameNumber (
  1222. _in KUSB_HANDLE InterfaceHandle,
  1223. _out PUINT FrameNumber)
  1224. {
  1225. return pUsbK_GetCurrentFrameNumber(InterfaceHandle, FrameNumber);
  1226. }
  1227. KUSB_EXP BOOL KUSB_API UsbK_GetOverlappedResult (
  1228. _in KUSB_HANDLE InterfaceHandle,
  1229. _in LPOVERLAPPED Overlapped,
  1230. _out PUINT lpNumberOfBytesTransferred,
  1231. _in BOOL bWait)
  1232. {
  1233. return pUsbK_GetOverlappedResult(InterfaceHandle, Overlapped, lpNumberOfBytesTransferred, bWait);
  1234. }
  1235. KUSB_EXP BOOL KUSB_API UsbK_GetProperty (
  1236. _in KUSB_HANDLE InterfaceHandle,
  1237. _in KUSB_PROPERTY PropertyType,
  1238. _ref PUINT PropertySize,
  1239. _out PVOID Value)
  1240. {
  1241. return pUsbK_GetProperty(InterfaceHandle, PropertyType, PropertySize, Value);
  1242. }
  1243. KUSB_EXP BOOL KUSB_API LstK_Init(
  1244. _out KLST_HANDLE* DeviceList,
  1245. _in KLST_FLAG Flags)
  1246. {
  1247. return pLstK_Init(DeviceList, Flags);
  1248. }
  1249. KUSB_EXP BOOL KUSB_API LstK_InitEx(
  1250. _out KLST_HANDLE* DeviceList,
  1251. _in KLST_FLAG Flags,
  1252. _in PKLST_PATTERN_MATCH PatternMatch)
  1253. {
  1254. return pLstK_InitEx(DeviceList, Flags, PatternMatch);
  1255. }
  1256. KUSB_EXP BOOL KUSB_API LstK_Free(
  1257. _in KLST_HANDLE DeviceList)
  1258. {
  1259. return pLstK_Free(DeviceList);
  1260. }
  1261. KUSB_EXP BOOL KUSB_API LstK_Enumerate(
  1262. _in KLST_HANDLE DeviceList,
  1263. _in KLST_ENUM_DEVINFO_CB* EnumDevListCB,
  1264. _inopt PVOID Context)
  1265. {
  1266. return pLstK_Enumerate(DeviceList, EnumDevListCB, Context);
  1267. }
  1268. KUSB_EXP BOOL KUSB_API LstK_Current(
  1269. _in KLST_HANDLE DeviceList,
  1270. _out KLST_DEVINFO_HANDLE* DeviceInfo)
  1271. {
  1272. return pLstK_Current(DeviceList, DeviceInfo);
  1273. }
  1274. KUSB_EXP BOOL KUSB_API LstK_MoveNext(
  1275. _in KLST_HANDLE DeviceList,
  1276. _outopt KLST_DEVINFO_HANDLE* DeviceInfo)
  1277. {
  1278. return pLstK_MoveNext(DeviceList, DeviceInfo);
  1279. }
  1280. KUSB_EXP VOID KUSB_API LstK_MoveReset(
  1281. _in KLST_HANDLE DeviceList)
  1282. {
  1283. pLstK_MoveReset(DeviceList);
  1284. }
  1285. KUSB_EXP BOOL KUSB_API LstK_FindByVidPid(
  1286. _in KLST_HANDLE DeviceList,
  1287. _in INT Vid,
  1288. _in INT Pid,
  1289. _out KLST_DEVINFO_HANDLE* DeviceInfo)
  1290. {
  1291. return pLstK_FindByVidPid(DeviceList, Vid, Pid, DeviceInfo);
  1292. }
  1293. KUSB_EXP BOOL KUSB_API LstK_Count(
  1294. _in KLST_HANDLE DeviceList,
  1295. _ref PUINT Count)
  1296. {
  1297. return pLstK_Count(DeviceList, Count);
  1298. }
  1299. KUSB_EXP BOOL KUSB_API HotK_Init(
  1300. _out KHOT_HANDLE* Handle,
  1301. _ref PKHOT_PARAMS InitParams)
  1302. {
  1303. return pHotK_Init(Handle, InitParams);
  1304. }
  1305. KUSB_EXP BOOL KUSB_API HotK_Free(
  1306. _in KHOT_HANDLE Handle)
  1307. {
  1308. return pHotK_Free(Handle);
  1309. }
  1310. KUSB_EXP VOID KUSB_API HotK_FreeAll(VOID)
  1311. {
  1312. pHotK_FreeAll();
  1313. }
  1314. KUSB_EXP BOOL

Large files files are truncated, but you can click here to view the full file