storport.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /*
  2. * storport.h
  3. *
  4. * StorPort interface
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  16. * This code is distributed in the hope that it will be useful but
  17. * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18. * DISCLAIMED. This includes but is not limited to warranties of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20. *
  21. */
  22. #ifndef __STORPORT_H
  23. #define __STORPORT_H
  24. #include "srb.h"
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. #if defined(_STORPORT_)
  29. #define STORPORTAPI
  30. #else
  31. #define STORPORTAPI DECLSPEC_IMPORT
  32. #endif
  33. typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS;
  34. typedef struct _STOR_SCATTER_GATHER_ELEMENT {
  35. STOR_PHYSICAL_ADDRESS PhysicalAddress;
  36. ULONG Length;
  37. ULONG_PTR Reserved;
  38. } STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT;
  39. typedef struct _STOR_SCATTER_GATHER_LIST {
  40. ULONG NumberOfElements;
  41. ULONG_PTR Reserved;
  42. STOR_SCATTER_GATHER_ELEMENT List[0];
  43. } STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST;
  44. typedef struct _SCSI_WMI_REQUEST_BLOCK {
  45. USHORT Length;
  46. UCHAR Function;
  47. UCHAR SrbStatus;
  48. UCHAR WMISubFunction;
  49. UCHAR PathId;
  50. UCHAR TargetId;
  51. UCHAR Lun;
  52. UCHAR Reserved1;
  53. UCHAR WMIFlags;
  54. UCHAR Reserved2[2];
  55. ULONG SrbFlags;
  56. ULONG DataTransferLength;
  57. ULONG TimeOutValue;
  58. PVOID DataBuffer;
  59. PVOID DataPath;
  60. PVOID Reserved3;
  61. PVOID OriginalRequest;
  62. PVOID SrbExtension;
  63. ULONG Reserved4;
  64. UCHAR Reserved5[16];
  65. } SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
  66. STORPORTAPI
  67. ULONG
  68. NTAPI
  69. StorPortInitialize(
  70. IN PVOID Argument1,
  71. IN PVOID Argument2,
  72. IN PHW_INITIALIZATION_DATA HwInitializationData,
  73. IN PVOID Unused);
  74. STORPORTAPI
  75. VOID
  76. NTAPI
  77. StorPortFreeDeviceBase(
  78. IN PVOID HwDeviceExtension,
  79. IN PVOID MappedAddress);
  80. STORPORTAPI
  81. ULONG
  82. NTAPI
  83. StorPortGetBusData(
  84. IN PVOID DeviceExtension,
  85. IN ULONG BusDataType,
  86. IN ULONG SystemIoBusNumber,
  87. IN ULONG SlotNumber,
  88. IN PVOID Buffer,
  89. IN ULONG Length);
  90. STORPORTAPI
  91. ULONG
  92. NTAPI
  93. StorPortSetBusDataByOffset(
  94. IN PVOID DeviceExtension,
  95. IN ULONG BusDataType,
  96. IN ULONG SystemIoBusNumber,
  97. IN ULONG SlotNumber,
  98. IN PVOID Buffer,
  99. IN ULONG Offset,
  100. IN ULONG Length);
  101. STORPORTAPI
  102. PVOID
  103. NTAPI
  104. StorPortGetDeviceBase(
  105. IN PVOID HwDeviceExtension,
  106. IN INTERFACE_TYPE BusType,
  107. IN ULONG SystemIoBusNumber,
  108. IN SCSI_PHYSICAL_ADDRESS IoAddress,
  109. IN ULONG NumberOfBytes,
  110. IN BOOLEAN InIoSpace);
  111. STORPORTAPI
  112. PVOID
  113. NTAPI
  114. StorPortGetLogicalUnit(
  115. IN PVOID HwDeviceExtension,
  116. IN UCHAR PathId,
  117. IN UCHAR TargetId,
  118. IN UCHAR Lun);
  119. STORPORTAPI
  120. PSCSI_REQUEST_BLOCK
  121. NTAPI
  122. StorPortGetSrb(
  123. IN PVOID DeviceExtension,
  124. IN UCHAR PathId,
  125. IN UCHAR TargetId,
  126. IN UCHAR Lun,
  127. IN LONG QueueTag);
  128. STORPORTAPI
  129. STOR_PHYSICAL_ADDRESS
  130. NTAPI
  131. StorPortGetPhysicalAddress(
  132. IN PVOID HwDeviceExtension,
  133. IN PSCSI_REQUEST_BLOCK Srb,
  134. IN PVOID VirtualAddress,
  135. OUT ULONG *Length);
  136. STORPORTAPI
  137. PVOID
  138. NTAPI
  139. StorPortGetVirtualAddress(
  140. IN PVOID HwDeviceExtension,
  141. IN STOR_PHYSICAL_ADDRESS PhysicalAddress);
  142. STORPORTAPI
  143. PVOID
  144. NTAPI
  145. StorPortGetUncachedExtension(
  146. IN PVOID HwDeviceExtension,
  147. IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  148. IN ULONG NumberOfBytes);
  149. STORPORTAPI
  150. VOID
  151. __cdecl
  152. StorPortNotification(
  153. IN SCSI_NOTIFICATION_TYPE NotificationType,
  154. IN PVOID HwDeviceExtension,
  155. IN ...);
  156. STORPORTAPI
  157. VOID
  158. NTAPI
  159. StorPortLogError(
  160. IN PVOID HwDeviceExtension,
  161. IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
  162. IN UCHAR PathId,
  163. IN UCHAR TargetId,
  164. IN UCHAR Lun,
  165. IN ULONG ErrorCode,
  166. IN ULONG UniqueId);
  167. STORPORTAPI
  168. VOID
  169. NTAPI
  170. StorPortCompleteRequest(
  171. IN PVOID HwDeviceExtension,
  172. IN UCHAR PathId,
  173. IN UCHAR TargetId,
  174. IN UCHAR Lun,
  175. IN UCHAR SrbStatus);
  176. STORPORTAPI
  177. VOID
  178. NTAPI
  179. StorPortMoveMemory(
  180. IN PVOID WriteBuffer,
  181. IN PVOID ReadBuffer,
  182. IN ULONG Length);
  183. STORPORTAPI
  184. VOID
  185. NTAPI
  186. StorPortStallExecution(
  187. IN ULONG Delay);
  188. STORPORTAPI
  189. STOR_PHYSICAL_ADDRESS
  190. NTAPI
  191. StorPortConvertUlong64ToPhysicalAddress(
  192. IN ULONG64 UlongAddress);
  193. STORPORTAPI
  194. ULONG64
  195. NTAPI
  196. StorPortConvertPhysicalAddressToUlong64(
  197. IN STOR_PHYSICAL_ADDRESS Address);
  198. STORPORTAPI
  199. BOOLEAN
  200. NTAPI
  201. StorPortValidateRange(
  202. IN PVOID HwDeviceExtension,
  203. IN INTERFACE_TYPE BusType,
  204. IN ULONG SystemIoBusNumber,
  205. IN STOR_PHYSICAL_ADDRESS IoAddress,
  206. IN ULONG NumberOfBytes,
  207. IN BOOLEAN InIoSpace);
  208. STORPORTAPI
  209. VOID
  210. __cdecl
  211. StorPortDebugPrint(
  212. IN ULONG DebugPrintLevel,
  213. IN PCCHAR DebugMessage,
  214. IN ...);
  215. STORPORTAPI
  216. UCHAR
  217. NTAPI
  218. StorPortReadPortUchar(
  219. IN PUCHAR Port);
  220. STORPORTAPI
  221. ULONG
  222. NTAPI
  223. StorPortReadPortUlong(
  224. IN PULONG Port);
  225. STORPORTAPI
  226. USHORT
  227. NTAPI
  228. StorPortReadPortUshort(
  229. IN PUSHORT Port);
  230. STORPORTAPI
  231. UCHAR
  232. NTAPI
  233. StorPortReadRegisterUchar(
  234. IN PUCHAR Register);
  235. STORPORTAPI
  236. ULONG
  237. NTAPI
  238. StorPortReadRegisterUlong(
  239. IN PULONG Register);
  240. STORPORTAPI
  241. USHORT
  242. NTAPI
  243. StorPortReadRegisterUshort(
  244. IN PUSHORT Register);
  245. STORPORTAPI
  246. VOID
  247. NTAPI
  248. StorPortWritePortUchar(
  249. IN PUCHAR Port,
  250. IN UCHAR Value);
  251. STORPORTAPI
  252. VOID
  253. NTAPI
  254. StorPortWritePortUlong(
  255. IN PULONG Port,
  256. IN ULONG Value);
  257. STORPORTAPI
  258. VOID
  259. NTAPI
  260. StorPortWritePortUshort(
  261. IN PUSHORT Port,
  262. IN USHORT Value);
  263. STORPORTAPI
  264. VOID
  265. NTAPI
  266. StorPortWriteRegisterUchar(
  267. IN PUCHAR Port,
  268. IN UCHAR Value);
  269. STORPORTAPI
  270. VOID
  271. NTAPI
  272. StorPortWriteRegisterUlong(
  273. IN PULONG Port,
  274. IN ULONG Value);
  275. STORPORTAPI
  276. VOID
  277. NTAPI
  278. StorPortWriteRegisterUshort(
  279. IN PUSHORT Port,
  280. IN USHORT Value);
  281. STORPORTAPI
  282. BOOLEAN
  283. NTAPI
  284. StorPortPauseDevice(
  285. IN PVOID HwDeviceExtension,
  286. IN UCHAR PathId,
  287. IN UCHAR TargetId,
  288. IN UCHAR Lun,
  289. IN ULONG TimeOut);
  290. STORPORTAPI
  291. BOOLEAN
  292. NTAPI
  293. StorPortResumeDevice(
  294. IN PVOID HwDeviceExtension,
  295. IN UCHAR PathId,
  296. IN UCHAR TargetId,
  297. IN UCHAR Lun);
  298. STORPORTAPI
  299. BOOLEAN
  300. NTAPI
  301. StorPortPause(
  302. IN PVOID HwDeviceExtension,
  303. IN ULONG TimeOut);
  304. STORPORTAPI
  305. BOOLEAN
  306. NTAPI
  307. StorPortResume(
  308. IN PVOID HwDeviceExtension);
  309. STORPORTAPI
  310. BOOLEAN
  311. NTAPI
  312. StorPortDeviceBusy(
  313. IN PVOID HwDeviceExtension,
  314. IN UCHAR PathId,
  315. IN UCHAR TargetId,
  316. IN UCHAR Lun,
  317. IN ULONG RequestsToComplete);
  318. STORPORTAPI
  319. BOOLEAN
  320. NTAPI
  321. StorPortDeviceReady(
  322. IN PVOID HwDeviceExtension,
  323. IN UCHAR PathId,
  324. IN UCHAR TargetId,
  325. IN UCHAR Lun);
  326. STORPORTAPI
  327. BOOLEAN
  328. NTAPI
  329. StorPortBusy(
  330. IN PVOID HwDeviceExtension,
  331. IN ULONG RequestsToComplete);
  332. STORPORTAPI
  333. BOOLEAN
  334. NTAPI
  335. StorPortReady(
  336. IN PVOID HwDeviceExtension);
  337. STORPORTAPI
  338. PSTOR_SCATTER_GATHER_LIST
  339. NTAPI
  340. StorPortGetScatterGatherList(
  341. IN PVOID DeviceExtension,
  342. IN PSCSI_REQUEST_BLOCK Srb);
  343. typedef BOOLEAN
  344. (NTAPI *PSTOR_SYNCHRONIZED_ACCESS)(
  345. IN PVOID HwDeviceExtension,
  346. IN PVOID Context);
  347. STORPORTAPI
  348. VOID
  349. NTAPI
  350. StorPortSynchronizeAccess(
  351. IN PVOID HwDeviceExtension,
  352. IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine,
  353. IN PVOID Context);
  354. #if DBG
  355. #define DebugPrint(x) StorPortDebugPrint x
  356. #else
  357. #define DebugPrint(x)
  358. #endif
  359. #ifdef __cplusplus
  360. }
  361. #endif
  362. #endif /* __STORPORT_H */