home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / storport.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  7KB  |  423 lines

  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.  
  23. #ifndef __STORPORT_H
  24. #define __STORPORT_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #include "ntddk.h"
  35. #include "srb.h"
  36.  
  37. #if defined(_STORPORT_)
  38.   #define STORPORTAPI DECLSPEC_EXPORT
  39. #else
  40.   #define STORPORTAPI DECLSPEC_IMPORT
  41. #endif
  42.  
  43.  
  44. typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS;
  45.  
  46. typedef struct _STOR_SCATTER_GATHER_ELEMENT {
  47.     STOR_PHYSICAL_ADDRESS  PhysicalAddress;
  48.     ULONG  Length;
  49.     ULONG_PTR  Reserved;
  50. } STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT;
  51.  
  52. typedef struct _STOR_SCATTER_GATHER_LIST {
  53.     ULONG  NumberOfElements;
  54.     ULONG_PTR  Reserved;
  55.     STOR_SCATTER_GATHER_ELEMENT  List[0];
  56. } STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST;
  57.  
  58. typedef struct _SCSI_WMI_REQUEST_BLOCK {
  59.   USHORT  Length;
  60.   UCHAR  Function;
  61.   UCHAR  SrbStatus;
  62.   UCHAR  WMISubFunction;
  63.   UCHAR  PathId;
  64.   UCHAR  TargetId;
  65.   UCHAR  Lun;
  66.   UCHAR  Reserved1;
  67.   UCHAR  WMIFlags;
  68.   UCHAR  Reserved2[2];
  69.   ULONG  SrbFlags;
  70.   ULONG  DataTransferLength;
  71.   ULONG  TimeOutValue;
  72.   PVOID  DataBuffer;
  73.   PVOID  DataPath;
  74.   PVOID  Reserved3;
  75.   PVOID  OriginalRequest;
  76.   PVOID  SrbExtension;
  77.   ULONG  Reserved4;
  78.   UCHAR  Reserved5[16];
  79. } SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
  80.  
  81.  
  82. STORPORTAPI
  83. ULONG
  84. DDKAPI
  85. StorPortInitialize(
  86.   IN PVOID  Argument1,
  87.   IN PVOID  Argument2,
  88.   IN PHW_INITIALIZATION_DATA  HwInitializationData,
  89.   IN PVOID  Unused);
  90.  
  91. STORPORTAPI
  92. VOID
  93. DDKAPI
  94. StorPortFreeDeviceBase(
  95.   IN PVOID  HwDeviceExtension,
  96.   IN PVOID  MappedAddress);
  97.  
  98. STORPORTAPI
  99. ULONG
  100. DDKAPI
  101. StorPortGetBusData(
  102.   IN PVOID  DeviceExtension,
  103.   IN ULONG  BusDataType,
  104.   IN ULONG  SystemIoBusNumber,
  105.   IN ULONG  SlotNumber,
  106.   IN PVOID  Buffer,
  107.   IN ULONG  Length);
  108.  
  109. STORPORTAPI
  110. ULONG
  111. DDKAPI
  112. StorPortSetBusDataByOffset(
  113.   IN PVOID  DeviceExtension,
  114.   IN ULONG   BusDataType,
  115.   IN ULONG  SystemIoBusNumber,
  116.   IN ULONG  SlotNumber,
  117.   IN PVOID  Buffer,
  118.   IN ULONG  Offset,
  119.   IN ULONG  Length);
  120.  
  121. STORPORTAPI
  122. PVOID
  123. DDKAPI
  124. StorPortGetDeviceBase(
  125.   IN PVOID  HwDeviceExtension,
  126.   IN INTERFACE_TYPE  BusType,
  127.   IN ULONG  SystemIoBusNumber,
  128.   IN SCSI_PHYSICAL_ADDRESS  IoAddress,
  129.   IN ULONG  NumberOfBytes,
  130.   IN BOOLEAN  InIoSpace);
  131.  
  132. STORPORTAPI
  133. PVOID
  134. DDKAPI
  135. StorPortGetLogicalUnit(
  136.   IN PVOID  HwDeviceExtension,
  137.   IN UCHAR  PathId,
  138.   IN UCHAR  TargetId,
  139.   IN UCHAR  Lun);
  140.  
  141. STORPORTAPI
  142. PSCSI_REQUEST_BLOCK
  143. DDKAPI
  144. StorPortGetSrb(
  145.   IN PVOID  DeviceExtension,
  146.   IN UCHAR  PathId,
  147.   IN UCHAR  TargetId,
  148.   IN UCHAR  Lun,
  149.   IN LONG  QueueTag);
  150.  
  151. STORPORTAPI
  152. STOR_PHYSICAL_ADDRESS
  153. DDKAPI
  154. StorPortGetPhysicalAddress(
  155.   IN PVOID  HwDeviceExtension,
  156.   IN PSCSI_REQUEST_BLOCK  Srb,
  157.   IN PVOID  VirtualAddress,
  158.   OUT ULONG  *Length);
  159.  
  160. STORPORTAPI
  161. PVOID
  162. DDKAPI
  163. StorPortGetVirtualAddress(
  164.   IN PVOID  HwDeviceExtension,
  165.   IN STOR_PHYSICAL_ADDRESS  PhysicalAddress);
  166.  
  167. STORPORTAPI
  168. PVOID
  169. DDKAPI
  170. StorPortGetUncachedExtension(
  171.   IN PVOID HwDeviceExtension,
  172.   IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  173.   IN ULONG NumberOfBytes);
  174.  
  175. STORPORTAPI
  176. VOID
  177. DDKCDECLAPI
  178. StorPortNotification(
  179.   IN SCSI_NOTIFICATION_TYPE  NotificationType,
  180.   IN PVOID  HwDeviceExtension,
  181.   IN ...);
  182.  
  183. STORPORTAPI
  184. VOID
  185. DDKAPI
  186. StorPortLogError(
  187.   IN PVOID  HwDeviceExtension,
  188.   IN PSCSI_REQUEST_BLOCK  Srb OPTIONAL,
  189.   IN UCHAR  PathId,
  190.   IN UCHAR  TargetId,
  191.   IN UCHAR  Lun,
  192.   IN ULONG  ErrorCode,
  193.   IN ULONG  UniqueId);
  194.  
  195. STORPORTAPI
  196. VOID
  197. DDKAPI
  198. StorPortCompleteRequest(
  199.   IN PVOID  HwDeviceExtension,
  200.   IN UCHAR  PathId,
  201.   IN UCHAR  TargetId,
  202.   IN UCHAR  Lun,
  203.   IN UCHAR  SrbStatus);
  204.  
  205. STORPORTAPI
  206. VOID
  207. DDKAPI
  208. StorPortMoveMemory(
  209.   IN PVOID  WriteBuffer,
  210.   IN PVOID  ReadBuffer,
  211.   IN ULONG  Length);
  212.  
  213. STORPORTAPI
  214. VOID
  215. DDKAPI
  216. StorPortStallExecution(
  217.   IN ULONG  Delay);
  218.  
  219. STORPORTAPI
  220. STOR_PHYSICAL_ADDRESS
  221. DDKAPI
  222. StorPortConvertUlong64ToPhysicalAddress(
  223.   IN ULONG64  UlongAddress);
  224.  
  225. STORPORTAPI
  226. ULONG64
  227. DDKAPI
  228. StorPortConvertPhysicalAddressToUlong64(
  229.   IN STOR_PHYSICAL_ADDRESS  Address);
  230.  
  231. STORPORTAPI
  232. BOOLEAN
  233. DDKAPI
  234. StorPortValidateRange(
  235.   IN PVOID  HwDeviceExtension,
  236.   IN INTERFACE_TYPE  BusType,
  237.   IN ULONG  SystemIoBusNumber,
  238.   IN STOR_PHYSICAL_ADDRESS  IoAddress,
  239.   IN ULONG  NumberOfBytes,
  240.   IN BOOLEAN  InIoSpace);
  241.  
  242. STORPORTAPI
  243. VOID
  244. DDKCDECLAPI
  245. StorPortDebugPrint(
  246.   IN ULONG  DebugPrintLevel,
  247.   IN PCCHAR  DebugMessage,
  248.   IN ...);
  249.  
  250. STORPORTAPI
  251. UCHAR
  252. DDKAPI
  253. StorPortReadPortUchar(
  254.   IN PUCHAR  Port);
  255.  
  256. STORPORTAPI
  257. ULONG
  258. DDKAPI
  259. StorPortReadPortUlong(
  260.   IN PULONG  Port);
  261.  
  262. STORPORTAPI
  263. USHORT
  264. DDKAPI
  265. StorPortReadPortUshort(
  266.   IN PUSHORT  Port);
  267.  
  268. STORPORTAPI
  269. UCHAR
  270. DDKAPI
  271. StorPortReadRegisterUchar(
  272.   IN PUCHAR  Register);
  273.  
  274. STORPORTAPI
  275. ULONG
  276. DDKAPI
  277. StorPortReadRegisterUlong(
  278.   IN PULONG  Register);
  279.  
  280. STORPORTAPI
  281. USHORT
  282. DDKAPI
  283. StorPortReadRegisterUshort(
  284.   IN PUSHORT  Register);
  285.  
  286. STORPORTAPI
  287. VOID
  288. DDKAPI
  289. StorPortWritePortUchar(
  290.   IN PUCHAR  Port,
  291.   IN UCHAR  Value);
  292.  
  293. STORPORTAPI
  294. VOID
  295. DDKAPI
  296. StorPortWritePortUlong(
  297.   IN PULONG  Port,
  298.   IN ULONG  Value);
  299.  
  300. STORPORTAPI
  301. VOID
  302. DDKAPI
  303. StorPortWritePortUshort(
  304.   IN PUSHORT  Port,
  305.   IN USHORT  Value);
  306.  
  307. STORPORTAPI
  308. VOID
  309. DDKAPI
  310. StorPortWriteRegisterUchar(
  311.   IN PUCHAR  Port,
  312.   IN UCHAR  Value);
  313.  
  314. STORPORTAPI
  315. VOID
  316. DDKAPI
  317. StorPortWriteRegisterUlong(
  318.   IN PULONG  Port,
  319.   IN ULONG  Value);
  320.  
  321. STORPORTAPI
  322. VOID
  323. DDKAPI
  324. StorPortWriteRegisterUshort(
  325.   IN PUSHORT  Port,
  326.   IN USHORT  Value);
  327.  
  328. STORPORTAPI
  329. BOOLEAN
  330. DDKAPI
  331. StorPortPauseDevice(
  332.   IN PVOID  HwDeviceExtension,
  333.   IN UCHAR  PathId,
  334.   IN UCHAR  TargetId,
  335.   IN UCHAR  Lun,
  336.   IN ULONG  TimeOut);
  337.  
  338. STORPORTAPI
  339. BOOLEAN
  340. DDKAPI
  341. StorPortResumeDevice(
  342.   IN PVOID  HwDeviceExtension,
  343.   IN UCHAR  PathId,
  344.   IN UCHAR  TargetId,
  345.   IN UCHAR  Lun);
  346.  
  347. STORPORTAPI
  348. BOOLEAN
  349. DDKAPI
  350. StorPortPause(
  351.   IN PVOID  HwDeviceExtension,
  352.   IN ULONG  TimeOut);
  353.  
  354. STORPORTAPI
  355. BOOLEAN
  356. DDKAPI
  357. StorPortResume(
  358.   IN PVOID  HwDeviceExtension);
  359.  
  360. STORPORTAPI
  361. BOOLEAN
  362. DDKAPI
  363. StorPortDeviceBusy(
  364.   IN PVOID  HwDeviceExtension,
  365.   IN UCHAR  PathId,
  366.   IN UCHAR  TargetId,
  367.   IN UCHAR  Lun,
  368.   IN ULONG  RequestsToComplete);
  369.  
  370. STORPORTAPI
  371. BOOLEAN
  372. DDKAPI
  373. StorPortDeviceReady(
  374.   IN PVOID  HwDeviceExtension,
  375.   IN UCHAR  PathId,
  376.   IN UCHAR  TargetId,
  377.   IN UCHAR  Lun);
  378.  
  379. STORPORTAPI
  380. BOOLEAN
  381. DDKAPI
  382. StorPortBusy(
  383.   IN PVOID  HwDeviceExtension,
  384.   IN ULONG  RequestsToComplete);
  385.  
  386. STORPORTAPI
  387. BOOLEAN
  388. DDKAPI
  389. StorPortReady(
  390.   IN PVOID  HwDeviceExtension);
  391.  
  392. STORPORTAPI
  393. PSTOR_SCATTER_GATHER_LIST
  394. DDKAPI
  395. StorPortGetScatterGatherList(
  396.   IN PVOID  DeviceExtension,
  397.   IN PSCSI_REQUEST_BLOCK  Srb);
  398.  
  399. typedef BOOLEAN DDKAPI
  400. (*PSTOR_SYNCHRONIZED_ACCESS)(
  401.   IN PVOID  HwDeviceExtension,
  402.   IN PVOID  Context);
  403.  
  404. STORPORTAPI
  405. VOID
  406. DDKAPI
  407. StorPortSynchronizeAccess(
  408.   IN PVOID  HwDeviceExtension,
  409.   IN PSTOR_SYNCHRONIZED_ACCESS  SynchronizedAccessRoutine,
  410.   IN PVOID  Context);
  411.  
  412. #ifdef DBG
  413. #define DebugPrint(x) StorPortDebugPrint x
  414. #else
  415. #define DebugPrint(x)
  416. #endif
  417.  
  418. #ifdef __cplusplus
  419. }
  420. #endif
  421.  
  422. #endif /* __STORPORT_H */
  423.