Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2129 lines
66 KiB

  1. #ifndef _hbapiwmi_h_
  2. #define _hbapiwmi_h_
  3. // MSFC_HBAPortStatistics - MSFC_HBAPortStatistics
  4. //***************************************************************************
  5. //
  6. // hbapiwmi.h
  7. //
  8. // Module: WDM classes to expose HBA api data from drivers
  9. //
  10. // Purpose: Contains WDM classes that specify the HBA data to be exposed
  11. // via the HBA api set.
  12. //
  13. // NOTE: This file contains information that is based upon an earlier
  14. // revision of the HBAAPI 2.0 specification. Since the
  15. // specification has not yet been approved, the information may
  16. // change in the next release of this file.
  17. //
  18. // Copyright (c) 2001 Microsoft Corporation
  19. //
  20. //***************************************************************************
  21. #define MSFC_HBAPortStatisticsGuid \
  22. { 0x3ce7904f,0x459f,0x480d, { 0x9a,0x3c,0x01,0x3e,0xde,0x3b,0xdd,0xe8 } }
  23. #if ! (defined(MIDL_PASS))
  24. DEFINE_GUID(MSFC_HBAPortStatistics_GUID, \
  25. 0x3ce7904f,0x459f,0x480d,0x9a,0x3c,0x01,0x3e,0xde,0x3b,0xdd,0xe8);
  26. #endif
  27. typedef struct _MSFC_HBAPortStatistics
  28. {
  29. //
  30. LONGLONG SecondsSinceLastReset;
  31. #define MSFC_HBAPortStatistics_SecondsSinceLastReset_SIZE sizeof(LONGLONG)
  32. #define MSFC_HBAPortStatistics_SecondsSinceLastReset_ID 1
  33. //
  34. LONGLONG TxFrames;
  35. #define MSFC_HBAPortStatistics_TxFrames_SIZE sizeof(LONGLONG)
  36. #define MSFC_HBAPortStatistics_TxFrames_ID 2
  37. //
  38. LONGLONG TxWords;
  39. #define MSFC_HBAPortStatistics_TxWords_SIZE sizeof(LONGLONG)
  40. #define MSFC_HBAPortStatistics_TxWords_ID 3
  41. //
  42. LONGLONG RxFrames;
  43. #define MSFC_HBAPortStatistics_RxFrames_SIZE sizeof(LONGLONG)
  44. #define MSFC_HBAPortStatistics_RxFrames_ID 4
  45. //
  46. LONGLONG RxWords;
  47. #define MSFC_HBAPortStatistics_RxWords_SIZE sizeof(LONGLONG)
  48. #define MSFC_HBAPortStatistics_RxWords_ID 5
  49. //
  50. LONGLONG LIPCount;
  51. #define MSFC_HBAPortStatistics_LIPCount_SIZE sizeof(LONGLONG)
  52. #define MSFC_HBAPortStatistics_LIPCount_ID 6
  53. //
  54. LONGLONG NOSCount;
  55. #define MSFC_HBAPortStatistics_NOSCount_SIZE sizeof(LONGLONG)
  56. #define MSFC_HBAPortStatistics_NOSCount_ID 7
  57. //
  58. LONGLONG ErrorFrames;
  59. #define MSFC_HBAPortStatistics_ErrorFrames_SIZE sizeof(LONGLONG)
  60. #define MSFC_HBAPortStatistics_ErrorFrames_ID 8
  61. //
  62. LONGLONG DumpedFrames;
  63. #define MSFC_HBAPortStatistics_DumpedFrames_SIZE sizeof(LONGLONG)
  64. #define MSFC_HBAPortStatistics_DumpedFrames_ID 9
  65. //
  66. LONGLONG LinkFailureCount;
  67. #define MSFC_HBAPortStatistics_LinkFailureCount_SIZE sizeof(LONGLONG)
  68. #define MSFC_HBAPortStatistics_LinkFailureCount_ID 10
  69. //
  70. LONGLONG LossOfSyncCount;
  71. #define MSFC_HBAPortStatistics_LossOfSyncCount_SIZE sizeof(LONGLONG)
  72. #define MSFC_HBAPortStatistics_LossOfSyncCount_ID 11
  73. //
  74. LONGLONG LossOfSignalCount;
  75. #define MSFC_HBAPortStatistics_LossOfSignalCount_SIZE sizeof(LONGLONG)
  76. #define MSFC_HBAPortStatistics_LossOfSignalCount_ID 12
  77. //
  78. LONGLONG PrimitiveSeqProtocolErrCount;
  79. #define MSFC_HBAPortStatistics_PrimitiveSeqProtocolErrCount_SIZE sizeof(LONGLONG)
  80. #define MSFC_HBAPortStatistics_PrimitiveSeqProtocolErrCount_ID 13
  81. //
  82. LONGLONG InvalidTxWordCount;
  83. #define MSFC_HBAPortStatistics_InvalidTxWordCount_SIZE sizeof(LONGLONG)
  84. #define MSFC_HBAPortStatistics_InvalidTxWordCount_ID 14
  85. //
  86. LONGLONG InvalidCRCCount;
  87. #define MSFC_HBAPortStatistics_InvalidCRCCount_SIZE sizeof(LONGLONG)
  88. #define MSFC_HBAPortStatistics_InvalidCRCCount_ID 15
  89. } MSFC_HBAPortStatistics, *PMSFC_HBAPortStatistics;
  90. #define MSFC_HBAPortStatistics_SIZE (FIELD_OFFSET(MSFC_HBAPortStatistics, InvalidCRCCount) + MSFC_HBAPortStatistics_InvalidCRCCount_SIZE)
  91. // MSFC_FibrePortHBAStatistics - MSFC_FibrePortHBAStatistics
  92. // This class exposes statistical information associated with a Fibre Channel port. There should be one instance of this class for each port.
  93. #define MSFC_FibrePortHBAStatisticsGuid \
  94. { 0x27efaba4,0x362a,0x4f20, { 0x92,0x0b,0xed,0x66,0xe2,0x80,0xfc,0xf5 } }
  95. #if ! (defined(MIDL_PASS))
  96. DEFINE_GUID(MSFC_FibrePortHBAStatistics_GUID, \
  97. 0x27efaba4,0x362a,0x4f20,0x92,0x0b,0xed,0x66,0xe2,0x80,0xfc,0xf5);
  98. #endif
  99. typedef struct _MSFC_FibrePortHBAStatistics
  100. {
  101. // Unique identifier for the port. This idenitifer must be unique among all ports on all adapters. The same value for the identifier must be used for the same port in other classes that expose port information
  102. ULONGLONG UniquePortId;
  103. #define MSFC_FibrePortHBAStatistics_UniquePortId_SIZE sizeof(ULONGLONG)
  104. #define MSFC_FibrePortHBAStatistics_UniquePortId_ID 1
  105. // HBA Status result for the query operation
  106. ULONG HBAStatus;
  107. #define MSFC_FibrePortHBAStatistics_HBAStatus_SIZE sizeof(ULONG)
  108. #define MSFC_FibrePortHBAStatistics_HBAStatus_ID 2
  109. //
  110. MSFC_HBAPortStatistics Statistics;
  111. #define MSFC_FibrePortHBAStatistics_Statistics_SIZE sizeof(MSFC_HBAPortStatistics)
  112. #define MSFC_FibrePortHBAStatistics_Statistics_ID 3
  113. } MSFC_FibrePortHBAStatistics, *PMSFC_FibrePortHBAStatistics;
  114. #define MSFC_FibrePortHBAStatistics_SIZE (FIELD_OFFSET(MSFC_FibrePortHBAStatistics, Statistics) + MSFC_FibrePortHBAStatistics_Statistics_SIZE)
  115. // MSFC_HBAPortAttributesResults - MSFC_HBAPortAttributesResults
  116. #define MSFC_HBAPortAttributesResultsGuid \
  117. { 0xa76bd4e3,0x9961,0x4d9b, { 0xb6,0xbe,0x86,0xe6,0x98,0x26,0x0f,0x68 } }
  118. #if ! (defined(MIDL_PASS))
  119. DEFINE_GUID(MSFC_HBAPortAttributesResults_GUID, \
  120. 0xa76bd4e3,0x9961,0x4d9b,0xb6,0xbe,0x86,0xe6,0x98,0x26,0x0f,0x68);
  121. #endif
  122. typedef struct _MSFC_HBAPortAttributesResults
  123. {
  124. //
  125. UCHAR NodeWWN[8];
  126. #define MSFC_HBAPortAttributesResults_NodeWWN_SIZE sizeof(UCHAR[8])
  127. #define MSFC_HBAPortAttributesResults_NodeWWN_ID 1
  128. //
  129. UCHAR PortWWN[8];
  130. #define MSFC_HBAPortAttributesResults_PortWWN_SIZE sizeof(UCHAR[8])
  131. #define MSFC_HBAPortAttributesResults_PortWWN_ID 2
  132. //
  133. ULONG PortFcId;
  134. #define MSFC_HBAPortAttributesResults_PortFcId_SIZE sizeof(ULONG)
  135. #define MSFC_HBAPortAttributesResults_PortFcId_ID 3
  136. //
  137. ULONG PortType;
  138. #define MSFC_HBAPortAttributesResults_PortType_SIZE sizeof(ULONG)
  139. #define MSFC_HBAPortAttributesResults_PortType_ID 4
  140. //
  141. ULONG PortState;
  142. #define MSFC_HBAPortAttributesResults_PortState_SIZE sizeof(ULONG)
  143. #define MSFC_HBAPortAttributesResults_PortState_ID 5
  144. //
  145. ULONG PortSupportedClassofService;
  146. #define MSFC_HBAPortAttributesResults_PortSupportedClassofService_SIZE sizeof(ULONG)
  147. #define MSFC_HBAPortAttributesResults_PortSupportedClassofService_ID 6
  148. //
  149. UCHAR PortSupportedFc4Types[32];
  150. #define MSFC_HBAPortAttributesResults_PortSupportedFc4Types_SIZE sizeof(UCHAR[32])
  151. #define MSFC_HBAPortAttributesResults_PortSupportedFc4Types_ID 7
  152. //
  153. UCHAR PortActiveFc4Types[32];
  154. #define MSFC_HBAPortAttributesResults_PortActiveFc4Types_SIZE sizeof(UCHAR[32])
  155. #define MSFC_HBAPortAttributesResults_PortActiveFc4Types_ID 8
  156. //
  157. ULONG PortSupportedSpeed;
  158. #define MSFC_HBAPortAttributesResults_PortSupportedSpeed_SIZE sizeof(ULONG)
  159. #define MSFC_HBAPortAttributesResults_PortSupportedSpeed_ID 9
  160. //
  161. ULONG PortSpeed;
  162. #define MSFC_HBAPortAttributesResults_PortSpeed_SIZE sizeof(ULONG)
  163. #define MSFC_HBAPortAttributesResults_PortSpeed_ID 10
  164. //
  165. ULONG PortMaxFrameSize;
  166. #define MSFC_HBAPortAttributesResults_PortMaxFrameSize_SIZE sizeof(ULONG)
  167. #define MSFC_HBAPortAttributesResults_PortMaxFrameSize_ID 11
  168. //
  169. UCHAR FabricName[8];
  170. #define MSFC_HBAPortAttributesResults_FabricName_SIZE sizeof(UCHAR[8])
  171. #define MSFC_HBAPortAttributesResults_FabricName_ID 12
  172. //
  173. ULONG NumberofDiscoveredPorts;
  174. #define MSFC_HBAPortAttributesResults_NumberofDiscoveredPorts_SIZE sizeof(ULONG)
  175. #define MSFC_HBAPortAttributesResults_NumberofDiscoveredPorts_ID 13
  176. } MSFC_HBAPortAttributesResults, *PMSFC_HBAPortAttributesResults;
  177. #define MSFC_HBAPortAttributesResults_SIZE (FIELD_OFFSET(MSFC_HBAPortAttributesResults, NumberofDiscoveredPorts) + MSFC_HBAPortAttributesResults_NumberofDiscoveredPorts_SIZE)
  178. // MSFC_FibrePortHBAAttributes - MSFC_FibrePortHBAAttributes
  179. // This class exposes attribute information associated with a Fibre Channel port. There should be one instance of this class for each port.
  180. #define MSFC_FibrePortHBAAttributesGuid \
  181. { 0x61b397fd,0xf5ae,0x4950, { 0x97,0x58,0x0e,0xe5,0x98,0xe3,0xc6,0xe6 } }
  182. #if ! (defined(MIDL_PASS))
  183. DEFINE_GUID(MSFC_FibrePortHBAAttributes_GUID, \
  184. 0x61b397fd,0xf5ae,0x4950,0x97,0x58,0x0e,0xe5,0x98,0xe3,0xc6,0xe6);
  185. #endif
  186. typedef struct _MSFC_FibrePortHBAAttributes
  187. {
  188. // Unique identifier for the port. This idenitifer must be unique among all ports on all adapters. The same value for the identifier must be used for the same port in other classes that expose port information
  189. ULONGLONG UniquePortId;
  190. #define MSFC_FibrePortHBAAttributes_UniquePortId_SIZE sizeof(ULONGLONG)
  191. #define MSFC_FibrePortHBAAttributes_UniquePortId_ID 1
  192. // HBA Status result for the query operation
  193. ULONG HBAStatus;
  194. #define MSFC_FibrePortHBAAttributes_HBAStatus_SIZE sizeof(ULONG)
  195. #define MSFC_FibrePortHBAAttributes_HBAStatus_ID 2
  196. //
  197. MSFC_HBAPortAttributesResults Attributes;
  198. #define MSFC_FibrePortHBAAttributes_Attributes_SIZE sizeof(MSFC_HBAPortAttributesResults)
  199. #define MSFC_FibrePortHBAAttributes_Attributes_ID 3
  200. } MSFC_FibrePortHBAAttributes, *PMSFC_FibrePortHBAAttributes;
  201. #define MSFC_FibrePortHBAAttributes_SIZE (FIELD_OFFSET(MSFC_FibrePortHBAAttributes, Attributes) + MSFC_FibrePortHBAAttributes_Attributes_SIZE)
  202. // MSFC_FibrePortHBAMethods - MSFC_FibrePortHBAMethods
  203. // This class exposes operations that can be performed on a Fibre Channel port. There should be one instance of this class for each port.
  204. #define MSFC_FibrePortHBAMethodsGuid \
  205. { 0xe693553e,0xedf6,0x4d57, { 0xbf,0x08,0xef,0xca,0xae,0x1a,0x2e,0x1c } }
  206. #if ! (defined(MIDL_PASS))
  207. DEFINE_GUID(MSFC_FibrePortHBAMethods_GUID, \
  208. 0xe693553e,0xedf6,0x4d57,0xbf,0x08,0xef,0xca,0xae,0x1a,0x2e,0x1c);
  209. #endif
  210. //
  211. // Method id definitions for MSFC_FibrePortHBAMethods
  212. #define ResetStatistics 1
  213. // MSFC_FCAdapterHBAAttributes - MSFC_FCAdapterHBAAttributes
  214. // This class exposes attribute information associated with a fibre channel adapter. There should be one instance of this class for each adapter
  215. #define MSFC_FCAdapterHBAAttributesGuid \
  216. { 0xf8f3ea26,0xab2c,0x4593, { 0x8b,0x84,0xc5,0x64,0x28,0xe6,0xbe,0xdb } }
  217. #if ! (defined(MIDL_PASS))
  218. DEFINE_GUID(MSFC_FCAdapterHBAAttributes_GUID, \
  219. 0xf8f3ea26,0xab2c,0x4593,0x8b,0x84,0xc5,0x64,0x28,0xe6,0xbe,0xdb);
  220. #endif
  221. typedef struct _MSFC_FCAdapterHBAAttributes
  222. {
  223. // Unique identifier for the adapter. This idenitifer must be unique among all adapters. The same value for the identifier must be used for the same adapter in other classes that expose adapter information
  224. ULONGLONG UniqueAdapterId;
  225. #define MSFC_FCAdapterHBAAttributes_UniqueAdapterId_SIZE sizeof(ULONGLONG)
  226. #define MSFC_FCAdapterHBAAttributes_UniqueAdapterId_ID 1
  227. // HBA Status result for the query operation
  228. ULONG HBAStatus;
  229. #define MSFC_FCAdapterHBAAttributes_HBAStatus_SIZE sizeof(ULONG)
  230. #define MSFC_FCAdapterHBAAttributes_HBAStatus_ID 2
  231. //
  232. UCHAR NodeWWN[8];
  233. #define MSFC_FCAdapterHBAAttributes_NodeWWN_SIZE sizeof(UCHAR[8])
  234. #define MSFC_FCAdapterHBAAttributes_NodeWWN_ID 3
  235. //
  236. ULONG VendorSpecificID;
  237. #define MSFC_FCAdapterHBAAttributes_VendorSpecificID_SIZE sizeof(ULONG)
  238. #define MSFC_FCAdapterHBAAttributes_VendorSpecificID_ID 4
  239. //
  240. ULONG NumberOfPorts;
  241. #define MSFC_FCAdapterHBAAttributes_NumberOfPorts_SIZE sizeof(ULONG)
  242. #define MSFC_FCAdapterHBAAttributes_NumberOfPorts_ID 5
  243. //
  244. WCHAR Manufacturer[64 + 1];
  245. #define MSFC_FCAdapterHBAAttributes_Manufacturer_ID 6
  246. //
  247. WCHAR SerialNumber[64 + 1];
  248. #define MSFC_FCAdapterHBAAttributes_SerialNumber_ID 7
  249. //
  250. WCHAR Model[256 + 1];
  251. #define MSFC_FCAdapterHBAAttributes_Model_ID 8
  252. //
  253. WCHAR ModelDescription[256 + 1];
  254. #define MSFC_FCAdapterHBAAttributes_ModelDescription_ID 9
  255. //
  256. WCHAR NodeSymbolicName[256 + 1];
  257. #define MSFC_FCAdapterHBAAttributes_NodeSymbolicName_ID 10
  258. //
  259. WCHAR HardwareVersion[256 + 1];
  260. #define MSFC_FCAdapterHBAAttributes_HardwareVersion_ID 11
  261. //
  262. WCHAR DriverVersion[256 + 1];
  263. #define MSFC_FCAdapterHBAAttributes_DriverVersion_ID 12
  264. //
  265. WCHAR OptionROMVersion[256 + 1];
  266. #define MSFC_FCAdapterHBAAttributes_OptionROMVersion_ID 13
  267. //
  268. WCHAR FirmwareVersion[256 + 1];
  269. #define MSFC_FCAdapterHBAAttributes_FirmwareVersion_ID 14
  270. //
  271. WCHAR DriverName[256 + 1];
  272. #define MSFC_FCAdapterHBAAttributes_DriverName_ID 15
  273. //
  274. WCHAR MfgDomain[256 + 1];
  275. #define MSFC_FCAdapterHBAAttributes_MfgDomain_ID 16
  276. } MSFC_FCAdapterHBAAttributes, *PMSFC_FCAdapterHBAAttributes;
  277. // HBAFC3MgmtInfo - HBAFC3MgmtInfo
  278. // This class exposes FC3 Management information associated with a fibre channel adapter. There should be one instance of this class for each adapter
  279. #define HBAFC3MgmtInfoGuid \
  280. { 0x5966a24f,0x6aa5,0x418e, { 0xb7,0x5c,0x2f,0x21,0x4d,0xfb,0x4b,0x18 } }
  281. #if ! (defined(MIDL_PASS))
  282. DEFINE_GUID(HBAFC3MgmtInfo_GUID, \
  283. 0x5966a24f,0x6aa5,0x418e,0xb7,0x5c,0x2f,0x21,0x4d,0xfb,0x4b,0x18);
  284. #endif
  285. typedef struct _HBAFC3MgmtInfo
  286. {
  287. // Unique identifier for the adapter. This idenitifer must be unique among all adapters. The same value for the identifier must be used for the same adapter in other classes that expose adapter information
  288. ULONGLONG UniqueAdapterId;
  289. #define HBAFC3MgmtInfo_UniqueAdapterId_SIZE sizeof(ULONGLONG)
  290. #define HBAFC3MgmtInfo_UniqueAdapterId_ID 1
  291. //
  292. UCHAR wwn[8];
  293. #define HBAFC3MgmtInfo_wwn_SIZE sizeof(UCHAR[8])
  294. #define HBAFC3MgmtInfo_wwn_ID 2
  295. //
  296. ULONG unittype;
  297. #define HBAFC3MgmtInfo_unittype_SIZE sizeof(ULONG)
  298. #define HBAFC3MgmtInfo_unittype_ID 3
  299. //
  300. ULONG PortId;
  301. #define HBAFC3MgmtInfo_PortId_SIZE sizeof(ULONG)
  302. #define HBAFC3MgmtInfo_PortId_ID 4
  303. //
  304. ULONG NumberOfAttachedNodes;
  305. #define HBAFC3MgmtInfo_NumberOfAttachedNodes_SIZE sizeof(ULONG)
  306. #define HBAFC3MgmtInfo_NumberOfAttachedNodes_ID 5
  307. //
  308. USHORT IPVersion;
  309. #define HBAFC3MgmtInfo_IPVersion_SIZE sizeof(USHORT)
  310. #define HBAFC3MgmtInfo_IPVersion_ID 6
  311. //
  312. USHORT UDPPort;
  313. #define HBAFC3MgmtInfo_UDPPort_SIZE sizeof(USHORT)
  314. #define HBAFC3MgmtInfo_UDPPort_ID 7
  315. //
  316. UCHAR IPAddress[16];
  317. #define HBAFC3MgmtInfo_IPAddress_SIZE sizeof(UCHAR[16])
  318. #define HBAFC3MgmtInfo_IPAddress_ID 8
  319. //
  320. USHORT reserved;
  321. #define HBAFC3MgmtInfo_reserved_SIZE sizeof(USHORT)
  322. #define HBAFC3MgmtInfo_reserved_ID 9
  323. //
  324. USHORT TopologyDiscoveryFlags;
  325. #define HBAFC3MgmtInfo_TopologyDiscoveryFlags_SIZE sizeof(USHORT)
  326. #define HBAFC3MgmtInfo_TopologyDiscoveryFlags_ID 10
  327. } HBAFC3MgmtInfo, *PHBAFC3MgmtInfo;
  328. #define HBAFC3MgmtInfo_SIZE (FIELD_OFFSET(HBAFC3MgmtInfo, TopologyDiscoveryFlags) + HBAFC3MgmtInfo_TopologyDiscoveryFlags_SIZE)
  329. // HBAScsiID - HBAScsiID
  330. #define HBAScsiIDGuid \
  331. { 0xa76f5058,0xb1f0,0x4622, { 0x9e,0x88,0x5c,0xc4,0x1e,0x34,0x45,0x4a } }
  332. #if ! (defined(MIDL_PASS))
  333. DEFINE_GUID(HBAScsiID_GUID, \
  334. 0xa76f5058,0xb1f0,0x4622,0x9e,0x88,0x5c,0xc4,0x1e,0x34,0x45,0x4a);
  335. #endif
  336. typedef struct _HBAScsiID
  337. {
  338. //
  339. WCHAR OSDeviceName[256 + 1];
  340. #define HBAScsiID_OSDeviceName_ID 1
  341. //
  342. ULONG ScsiBusNumber;
  343. #define HBAScsiID_ScsiBusNumber_SIZE sizeof(ULONG)
  344. #define HBAScsiID_ScsiBusNumber_ID 2
  345. //
  346. ULONG ScsiTargetNumber;
  347. #define HBAScsiID_ScsiTargetNumber_SIZE sizeof(ULONG)
  348. #define HBAScsiID_ScsiTargetNumber_ID 3
  349. //
  350. ULONG ScsiOSLun;
  351. #define HBAScsiID_ScsiOSLun_SIZE sizeof(ULONG)
  352. #define HBAScsiID_ScsiOSLun_ID 4
  353. } HBAScsiID, *PHBAScsiID;
  354. #define HBAScsiID_SIZE (FIELD_OFFSET(HBAScsiID, ScsiOSLun) + HBAScsiID_ScsiOSLun_SIZE)
  355. // MSFC_FC4STATISTICS - MSFC_FC4STATISTICS
  356. #define MSFC_FC4STATISTICSGuid \
  357. { 0xca8e7fe6,0xb85e,0x497f, { 0x88,0x58,0x9b,0x5d,0x93,0xa6,0x6f,0xe1 } }
  358. #if ! (defined(MIDL_PASS))
  359. DEFINE_GUID(MSFC_FC4STATISTICS_GUID, \
  360. 0xca8e7fe6,0xb85e,0x497f,0x88,0x58,0x9b,0x5d,0x93,0xa6,0x6f,0xe1);
  361. #endif
  362. typedef struct _MSFC_FC4STATISTICS
  363. {
  364. //
  365. ULONGLONG InputRequests;
  366. #define MSFC_FC4STATISTICS_InputRequests_SIZE sizeof(ULONGLONG)
  367. #define MSFC_FC4STATISTICS_InputRequests_ID 1
  368. //
  369. ULONGLONG OutputRequests;
  370. #define MSFC_FC4STATISTICS_OutputRequests_SIZE sizeof(ULONGLONG)
  371. #define MSFC_FC4STATISTICS_OutputRequests_ID 2
  372. //
  373. ULONGLONG ControlRequests;
  374. #define MSFC_FC4STATISTICS_ControlRequests_SIZE sizeof(ULONGLONG)
  375. #define MSFC_FC4STATISTICS_ControlRequests_ID 3
  376. //
  377. ULONGLONG InputMegabytes;
  378. #define MSFC_FC4STATISTICS_InputMegabytes_SIZE sizeof(ULONGLONG)
  379. #define MSFC_FC4STATISTICS_InputMegabytes_ID 4
  380. //
  381. ULONGLONG OutputMegabytes;
  382. #define MSFC_FC4STATISTICS_OutputMegabytes_SIZE sizeof(ULONGLONG)
  383. #define MSFC_FC4STATISTICS_OutputMegabytes_ID 5
  384. } MSFC_FC4STATISTICS, *PMSFC_FC4STATISTICS;
  385. #define MSFC_FC4STATISTICS_SIZE (FIELD_OFFSET(MSFC_FC4STATISTICS, OutputMegabytes) + MSFC_FC4STATISTICS_OutputMegabytes_SIZE)
  386. // MSFC_TM - MSFC_TM
  387. //
  388. #define MSFC_TMGuid \
  389. { 0x8cf4c7eb,0xa286,0x409d, { 0x9e,0xb9,0x29,0xd7,0xe0,0xe9,0xf4,0xfa } }
  390. #if ! (defined(MIDL_PASS))
  391. DEFINE_GUID(MSFC_TM_GUID, \
  392. 0x8cf4c7eb,0xa286,0x409d,0x9e,0xb9,0x29,0xd7,0xe0,0xe9,0xf4,0xfa);
  393. #endif
  394. typedef struct _MSFC_TM
  395. {
  396. //
  397. ULONG tm_sec;
  398. #define MSFC_TM_tm_sec_SIZE sizeof(ULONG)
  399. #define MSFC_TM_tm_sec_ID 1
  400. //
  401. ULONG tm_min;
  402. #define MSFC_TM_tm_min_SIZE sizeof(ULONG)
  403. #define MSFC_TM_tm_min_ID 2
  404. //
  405. ULONG tm_hour;
  406. #define MSFC_TM_tm_hour_SIZE sizeof(ULONG)
  407. #define MSFC_TM_tm_hour_ID 3
  408. //
  409. ULONG tm_mday;
  410. #define MSFC_TM_tm_mday_SIZE sizeof(ULONG)
  411. #define MSFC_TM_tm_mday_ID 4
  412. //
  413. ULONG tm_mon;
  414. #define MSFC_TM_tm_mon_SIZE sizeof(ULONG)
  415. #define MSFC_TM_tm_mon_ID 5
  416. //
  417. ULONG tm_year;
  418. #define MSFC_TM_tm_year_SIZE sizeof(ULONG)
  419. #define MSFC_TM_tm_year_ID 6
  420. //
  421. ULONG tm_wday;
  422. #define MSFC_TM_tm_wday_SIZE sizeof(ULONG)
  423. #define MSFC_TM_tm_wday_ID 7
  424. //
  425. ULONG tm_yday;
  426. #define MSFC_TM_tm_yday_SIZE sizeof(ULONG)
  427. #define MSFC_TM_tm_yday_ID 8
  428. //
  429. ULONG tm_isdst;
  430. #define MSFC_TM_tm_isdst_SIZE sizeof(ULONG)
  431. #define MSFC_TM_tm_isdst_ID 9
  432. } MSFC_TM, *PMSFC_TM;
  433. #define MSFC_TM_SIZE (FIELD_OFFSET(MSFC_TM, tm_isdst) + MSFC_TM_tm_isdst_SIZE)
  434. // MSFC_EventBuffer - MSFC_EventBuffer
  435. //
  436. #define MSFC_EventBufferGuid \
  437. { 0x623f4588,0xcf01,0x4f0e, { 0xb1,0x97,0xab,0xbe,0xe5,0xe0,0xcf,0xf3 } }
  438. #if ! (defined(MIDL_PASS))
  439. DEFINE_GUID(MSFC_EventBuffer_GUID, \
  440. 0x623f4588,0xcf01,0x4f0e,0xb1,0x97,0xab,0xbe,0xe5,0xe0,0xcf,0xf3);
  441. #endif
  442. typedef struct _MSFC_EventBuffer
  443. {
  444. //
  445. ULONG EventType;
  446. #define MSFC_EventBuffer_EventType_SIZE sizeof(ULONG)
  447. #define MSFC_EventBuffer_EventType_ID 1
  448. //
  449. ULONG EventInfo[4];
  450. #define MSFC_EventBuffer_EventInfo_SIZE sizeof(ULONG[4])
  451. #define MSFC_EventBuffer_EventInfo_ID 2
  452. } MSFC_EventBuffer, *PMSFC_EventBuffer;
  453. #define MSFC_EventBuffer_SIZE (FIELD_OFFSET(MSFC_EventBuffer, EventInfo) + MSFC_EventBuffer_EventInfo_SIZE)
  454. // MSFC_HBAAdapterMethods - MSFC_HBAAdapterMethods
  455. // This class exposes port discovery operations that can be by a fibre channel adapter. There should be one instance of this class for each adapter
  456. #define MSFC_HBAAdapterMethodsGuid \
  457. { 0xdf87d4ed,0x4612,0x4d12, { 0x85,0xfb,0x83,0x57,0x4e,0xc3,0x4b,0x7c } }
  458. #if ! (defined(MIDL_PASS))
  459. DEFINE_GUID(MSFC_HBAAdapterMethods_GUID, \
  460. 0xdf87d4ed,0x4612,0x4d12,0x85,0xfb,0x83,0x57,0x4e,0xc3,0x4b,0x7c);
  461. #endif
  462. //
  463. // Method id definitions for MSFC_HBAAdapterMethods
  464. #define GetDiscoveredPortAttributes 1
  465. typedef struct _GetDiscoveredPortAttributes_IN
  466. {
  467. //
  468. ULONG PortIndex;
  469. #define GetDiscoveredPortAttributes_IN_PortIndex_SIZE sizeof(ULONG)
  470. #define GetDiscoveredPortAttributes_IN_PortIndex_ID 1
  471. //
  472. ULONG DiscoveredPortIndex;
  473. #define GetDiscoveredPortAttributes_IN_DiscoveredPortIndex_SIZE sizeof(ULONG)
  474. #define GetDiscoveredPortAttributes_IN_DiscoveredPortIndex_ID 2
  475. } GetDiscoveredPortAttributes_IN, *PGetDiscoveredPortAttributes_IN;
  476. #define GetDiscoveredPortAttributes_IN_SIZE (FIELD_OFFSET(GetDiscoveredPortAttributes_IN, DiscoveredPortIndex) + GetDiscoveredPortAttributes_IN_DiscoveredPortIndex_SIZE)
  477. typedef struct _GetDiscoveredPortAttributes_OUT
  478. {
  479. // HBA Status result for the query operation
  480. ULONG HBAStatus;
  481. #define GetDiscoveredPortAttributes_OUT_HBAStatus_SIZE sizeof(ULONG)
  482. #define GetDiscoveredPortAttributes_OUT_HBAStatus_ID 3
  483. //
  484. MSFC_HBAPortAttributesResults PortAttributes;
  485. #define GetDiscoveredPortAttributes_OUT_PortAttributes_SIZE sizeof(MSFC_HBAPortAttributesResults)
  486. #define GetDiscoveredPortAttributes_OUT_PortAttributes_ID 4
  487. } GetDiscoveredPortAttributes_OUT, *PGetDiscoveredPortAttributes_OUT;
  488. #define GetDiscoveredPortAttributes_OUT_SIZE (FIELD_OFFSET(GetDiscoveredPortAttributes_OUT, PortAttributes) + GetDiscoveredPortAttributes_OUT_PortAttributes_SIZE)
  489. #define GetPortAttributesByWWN 2
  490. typedef struct _GetPortAttributesByWWN_IN
  491. {
  492. //
  493. UCHAR wwn[8];
  494. #define GetPortAttributesByWWN_IN_wwn_SIZE sizeof(UCHAR[8])
  495. #define GetPortAttributesByWWN_IN_wwn_ID 1
  496. } GetPortAttributesByWWN_IN, *PGetPortAttributesByWWN_IN;
  497. #define GetPortAttributesByWWN_IN_SIZE (FIELD_OFFSET(GetPortAttributesByWWN_IN, wwn) + GetPortAttributesByWWN_IN_wwn_SIZE)
  498. typedef struct _GetPortAttributesByWWN_OUT
  499. {
  500. // HBA Status result for the query operation
  501. ULONG HBAStatus;
  502. #define GetPortAttributesByWWN_OUT_HBAStatus_SIZE sizeof(ULONG)
  503. #define GetPortAttributesByWWN_OUT_HBAStatus_ID 2
  504. //
  505. MSFC_HBAPortAttributesResults PortAttributes;
  506. #define GetPortAttributesByWWN_OUT_PortAttributes_SIZE sizeof(MSFC_HBAPortAttributesResults)
  507. #define GetPortAttributesByWWN_OUT_PortAttributes_ID 3
  508. } GetPortAttributesByWWN_OUT, *PGetPortAttributesByWWN_OUT;
  509. #define GetPortAttributesByWWN_OUT_SIZE (FIELD_OFFSET(GetPortAttributesByWWN_OUT, PortAttributes) + GetPortAttributesByWWN_OUT_PortAttributes_SIZE)
  510. #define RefreshInformation 3
  511. #define SendCTPassThru 4
  512. typedef struct _SendCTPassThru_IN
  513. {
  514. //
  515. UCHAR PortWWN[8];
  516. #define SendCTPassThru_IN_PortWWN_SIZE sizeof(UCHAR[8])
  517. #define SendCTPassThru_IN_PortWWN_ID 2
  518. //
  519. ULONG RequestBufferCount;
  520. #define SendCTPassThru_IN_RequestBufferCount_SIZE sizeof(ULONG)
  521. #define SendCTPassThru_IN_RequestBufferCount_ID 3
  522. //
  523. UCHAR RequestBuffer[1];
  524. #define SendCTPassThru_IN_RequestBuffer_ID 4
  525. } SendCTPassThru_IN, *PSendCTPassThru_IN;
  526. typedef struct _SendCTPassThru_OUT
  527. {
  528. // HBA Status result for the query operation
  529. ULONG HBAStatus;
  530. #define SendCTPassThru_OUT_HBAStatus_SIZE sizeof(ULONG)
  531. #define SendCTPassThru_OUT_HBAStatus_ID 1
  532. //
  533. ULONG TotalResponseBufferCount;
  534. #define SendCTPassThru_OUT_TotalResponseBufferCount_SIZE sizeof(ULONG)
  535. #define SendCTPassThru_OUT_TotalResponseBufferCount_ID 5
  536. //
  537. ULONG ActualResponseBufferCount;
  538. #define SendCTPassThru_OUT_ActualResponseBufferCount_SIZE sizeof(ULONG)
  539. #define SendCTPassThru_OUT_ActualResponseBufferCount_ID 6
  540. //
  541. UCHAR ResponseBuffer[1];
  542. #define SendCTPassThru_OUT_ResponseBuffer_ID 7
  543. } SendCTPassThru_OUT, *PSendCTPassThru_OUT;
  544. #define SendRNID 5
  545. typedef struct _SendRNID_IN
  546. {
  547. //
  548. UCHAR wwn[8];
  549. #define SendRNID_IN_wwn_SIZE sizeof(UCHAR[8])
  550. #define SendRNID_IN_wwn_ID 1
  551. //
  552. ULONG wwntype;
  553. #define SendRNID_IN_wwntype_SIZE sizeof(ULONG)
  554. #define SendRNID_IN_wwntype_ID 2
  555. } SendRNID_IN, *PSendRNID_IN;
  556. #define SendRNID_IN_SIZE (FIELD_OFFSET(SendRNID_IN, wwntype) + SendRNID_IN_wwntype_SIZE)
  557. typedef struct _SendRNID_OUT
  558. {
  559. // HBA Status result for the query operation
  560. ULONG HBAStatus;
  561. #define SendRNID_OUT_HBAStatus_SIZE sizeof(ULONG)
  562. #define SendRNID_OUT_HBAStatus_ID 3
  563. //
  564. ULONG ResponseBufferCount;
  565. #define SendRNID_OUT_ResponseBufferCount_SIZE sizeof(ULONG)
  566. #define SendRNID_OUT_ResponseBufferCount_ID 4
  567. //
  568. UCHAR ResponseBuffer[1];
  569. #define SendRNID_OUT_ResponseBuffer_ID 5
  570. } SendRNID_OUT, *PSendRNID_OUT;
  571. #define SendRNIDV2 6
  572. typedef struct _SendRNIDV2_IN
  573. {
  574. //
  575. UCHAR PortWWN[8];
  576. #define SendRNIDV2_IN_PortWWN_SIZE sizeof(UCHAR[8])
  577. #define SendRNIDV2_IN_PortWWN_ID 2
  578. //
  579. UCHAR DestWWN[8];
  580. #define SendRNIDV2_IN_DestWWN_SIZE sizeof(UCHAR[8])
  581. #define SendRNIDV2_IN_DestWWN_ID 3
  582. //
  583. ULONG DestFCID;
  584. #define SendRNIDV2_IN_DestFCID_SIZE sizeof(ULONG)
  585. #define SendRNIDV2_IN_DestFCID_ID 4
  586. //
  587. ULONG NodeIdDataFormat;
  588. #define SendRNIDV2_IN_NodeIdDataFormat_SIZE sizeof(ULONG)
  589. #define SendRNIDV2_IN_NodeIdDataFormat_ID 5
  590. } SendRNIDV2_IN, *PSendRNIDV2_IN;
  591. #define SendRNIDV2_IN_SIZE (FIELD_OFFSET(SendRNIDV2_IN, NodeIdDataFormat) + SendRNIDV2_IN_NodeIdDataFormat_SIZE)
  592. typedef struct _SendRNIDV2_OUT
  593. {
  594. // HBA Status result for the query operation
  595. ULONG HBAStatus;
  596. #define SendRNIDV2_OUT_HBAStatus_SIZE sizeof(ULONG)
  597. #define SendRNIDV2_OUT_HBAStatus_ID 1
  598. //
  599. ULONG TotalRspBufferSize;
  600. #define SendRNIDV2_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  601. #define SendRNIDV2_OUT_TotalRspBufferSize_ID 6
  602. //
  603. ULONG ActualRspBufferSize;
  604. #define SendRNIDV2_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  605. #define SendRNIDV2_OUT_ActualRspBufferSize_ID 7
  606. //
  607. UCHAR RspBuffer[1];
  608. #define SendRNIDV2_OUT_RspBuffer_ID 8
  609. } SendRNIDV2_OUT, *PSendRNIDV2_OUT;
  610. #define GetFC3MgmtInfo 7
  611. typedef struct _GetFC3MgmtInfo_OUT
  612. {
  613. // HBA Status result for the query operation
  614. ULONG HBAStatus;
  615. #define GetFC3MgmtInfo_OUT_HBAStatus_SIZE sizeof(ULONG)
  616. #define GetFC3MgmtInfo_OUT_HBAStatus_ID 1
  617. //
  618. HBAFC3MgmtInfo MgmtInfo;
  619. #define GetFC3MgmtInfo_OUT_MgmtInfo_SIZE sizeof(HBAFC3MgmtInfo)
  620. #define GetFC3MgmtInfo_OUT_MgmtInfo_ID 2
  621. } GetFC3MgmtInfo_OUT, *PGetFC3MgmtInfo_OUT;
  622. #define GetFC3MgmtInfo_OUT_SIZE (FIELD_OFFSET(GetFC3MgmtInfo_OUT, MgmtInfo) + GetFC3MgmtInfo_OUT_MgmtInfo_SIZE)
  623. #define SetFC3MgmtInfo 8
  624. typedef struct _SetFC3MgmtInfo_IN
  625. {
  626. //
  627. HBAFC3MgmtInfo MgmtInfo;
  628. #define SetFC3MgmtInfo_IN_MgmtInfo_SIZE sizeof(HBAFC3MgmtInfo)
  629. #define SetFC3MgmtInfo_IN_MgmtInfo_ID 2
  630. } SetFC3MgmtInfo_IN, *PSetFC3MgmtInfo_IN;
  631. #define SetFC3MgmtInfo_IN_SIZE (FIELD_OFFSET(SetFC3MgmtInfo_IN, MgmtInfo) + SetFC3MgmtInfo_IN_MgmtInfo_SIZE)
  632. typedef struct _SetFC3MgmtInfo_OUT
  633. {
  634. // HBA Status result for the query operation
  635. ULONG HBAStatus;
  636. #define SetFC3MgmtInfo_OUT_HBAStatus_SIZE sizeof(ULONG)
  637. #define SetFC3MgmtInfo_OUT_HBAStatus_ID 1
  638. } SetFC3MgmtInfo_OUT, *PSetFC3MgmtInfo_OUT;
  639. #define SetFC3MgmtInfo_OUT_SIZE (FIELD_OFFSET(SetFC3MgmtInfo_OUT, HBAStatus) + SetFC3MgmtInfo_OUT_HBAStatus_SIZE)
  640. #define SendRTIN 9
  641. typedef struct _SendRTIN_IN
  642. {
  643. //
  644. UCHAR PortWWN[8];
  645. #define SendRTIN_IN_PortWWN_SIZE sizeof(UCHAR[8])
  646. #define SendRTIN_IN_PortWWN_ID 2
  647. //
  648. UCHAR AgentWWN[8];
  649. #define SendRTIN_IN_AgentWWN_SIZE sizeof(UCHAR[8])
  650. #define SendRTIN_IN_AgentWWN_ID 3
  651. //
  652. UCHAR ObjectWWN[8];
  653. #define SendRTIN_IN_ObjectWWN_SIZE sizeof(UCHAR[8])
  654. #define SendRTIN_IN_ObjectWWN_ID 4
  655. //
  656. BOOLEAN WWNIsDomain;
  657. #define SendRTIN_IN_WWNIsDomain_SIZE sizeof(BOOLEAN)
  658. #define SendRTIN_IN_WWNIsDomain_ID 5
  659. } SendRTIN_IN, *PSendRTIN_IN;
  660. #define SendRTIN_IN_SIZE (FIELD_OFFSET(SendRTIN_IN, WWNIsDomain) + SendRTIN_IN_WWNIsDomain_SIZE)
  661. typedef struct _SendRTIN_OUT
  662. {
  663. // HBA Status result for the query operation
  664. ULONG HBAStatus;
  665. #define SendRTIN_OUT_HBAStatus_SIZE sizeof(ULONG)
  666. #define SendRTIN_OUT_HBAStatus_ID 1
  667. //
  668. ULONG RspBufferSize;
  669. #define SendRTIN_OUT_RspBufferSize_SIZE sizeof(ULONG)
  670. #define SendRTIN_OUT_RspBufferSize_ID 6
  671. //
  672. UCHAR RspBuffer[1];
  673. #define SendRTIN_OUT_RspBuffer_ID 7
  674. } SendRTIN_OUT, *PSendRTIN_OUT;
  675. #define SendRPL 10
  676. typedef struct _SendRPL_IN
  677. {
  678. //
  679. UCHAR PortWWN[8];
  680. #define SendRPL_IN_PortWWN_SIZE sizeof(UCHAR[8])
  681. #define SendRPL_IN_PortWWN_ID 2
  682. //
  683. UCHAR AgentWWN[8];
  684. #define SendRPL_IN_AgentWWN_SIZE sizeof(UCHAR[8])
  685. #define SendRPL_IN_AgentWWN_ID 3
  686. //
  687. ULONG agent_domain;
  688. #define SendRPL_IN_agent_domain_SIZE sizeof(ULONG)
  689. #define SendRPL_IN_agent_domain_ID 4
  690. //
  691. ULONG portIndex;
  692. #define SendRPL_IN_portIndex_SIZE sizeof(ULONG)
  693. #define SendRPL_IN_portIndex_ID 5
  694. } SendRPL_IN, *PSendRPL_IN;
  695. #define SendRPL_IN_SIZE (FIELD_OFFSET(SendRPL_IN, portIndex) + SendRPL_IN_portIndex_SIZE)
  696. typedef struct _SendRPL_OUT
  697. {
  698. // HBA Status result for the query operation
  699. ULONG HBAStatus;
  700. #define SendRPL_OUT_HBAStatus_SIZE sizeof(ULONG)
  701. #define SendRPL_OUT_HBAStatus_ID 1
  702. //
  703. ULONG TotalRspBufferSize;
  704. #define SendRPL_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  705. #define SendRPL_OUT_TotalRspBufferSize_ID 6
  706. //
  707. ULONG ActualRspBufferSize;
  708. #define SendRPL_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  709. #define SendRPL_OUT_ActualRspBufferSize_ID 7
  710. //
  711. UCHAR RspBuffer[1];
  712. #define SendRPL_OUT_RspBuffer_ID 8
  713. } SendRPL_OUT, *PSendRPL_OUT;
  714. #define SendRPS 11
  715. typedef struct _SendRPS_IN
  716. {
  717. //
  718. UCHAR PortWWN[8];
  719. #define SendRPS_IN_PortWWN_SIZE sizeof(UCHAR[8])
  720. #define SendRPS_IN_PortWWN_ID 2
  721. //
  722. UCHAR AgentWWN[8];
  723. #define SendRPS_IN_AgentWWN_SIZE sizeof(UCHAR[8])
  724. #define SendRPS_IN_AgentWWN_ID 3
  725. //
  726. UCHAR ObjectWWN[8];
  727. #define SendRPS_IN_ObjectWWN_SIZE sizeof(UCHAR[8])
  728. #define SendRPS_IN_ObjectWWN_ID 4
  729. //
  730. ULONG AgentDomain;
  731. #define SendRPS_IN_AgentDomain_SIZE sizeof(ULONG)
  732. #define SendRPS_IN_AgentDomain_ID 5
  733. //
  734. ULONG ObjectPortNumber;
  735. #define SendRPS_IN_ObjectPortNumber_SIZE sizeof(ULONG)
  736. #define SendRPS_IN_ObjectPortNumber_ID 6
  737. } SendRPS_IN, *PSendRPS_IN;
  738. #define SendRPS_IN_SIZE (FIELD_OFFSET(SendRPS_IN, ObjectPortNumber) + SendRPS_IN_ObjectPortNumber_SIZE)
  739. typedef struct _SendRPS_OUT
  740. {
  741. // HBA Status result for the query operation
  742. ULONG HBAStatus;
  743. #define SendRPS_OUT_HBAStatus_SIZE sizeof(ULONG)
  744. #define SendRPS_OUT_HBAStatus_ID 1
  745. //
  746. ULONG TotalRspBufferSize;
  747. #define SendRPS_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  748. #define SendRPS_OUT_TotalRspBufferSize_ID 7
  749. //
  750. ULONG ActualRspBufferSize;
  751. #define SendRPS_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  752. #define SendRPS_OUT_ActualRspBufferSize_ID 8
  753. //
  754. UCHAR RspBuffer[1];
  755. #define SendRPS_OUT_RspBuffer_ID 9
  756. } SendRPS_OUT, *PSendRPS_OUT;
  757. #define SendSRL 12
  758. typedef struct _SendSRL_IN
  759. {
  760. //
  761. UCHAR PortWWN[8];
  762. #define SendSRL_IN_PortWWN_SIZE sizeof(UCHAR[8])
  763. #define SendSRL_IN_PortWWN_ID 2
  764. //
  765. UCHAR WWN[8];
  766. #define SendSRL_IN_WWN_SIZE sizeof(UCHAR[8])
  767. #define SendSRL_IN_WWN_ID 3
  768. //
  769. ULONG Domain;
  770. #define SendSRL_IN_Domain_SIZE sizeof(ULONG)
  771. #define SendSRL_IN_Domain_ID 4
  772. } SendSRL_IN, *PSendSRL_IN;
  773. #define SendSRL_IN_SIZE (FIELD_OFFSET(SendSRL_IN, Domain) + SendSRL_IN_Domain_SIZE)
  774. typedef struct _SendSRL_OUT
  775. {
  776. // HBA Status result for the query operation
  777. ULONG HBAStatus;
  778. #define SendSRL_OUT_HBAStatus_SIZE sizeof(ULONG)
  779. #define SendSRL_OUT_HBAStatus_ID 1
  780. //
  781. ULONG TotalRspBufferSize;
  782. #define SendSRL_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  783. #define SendSRL_OUT_TotalRspBufferSize_ID 5
  784. //
  785. ULONG ActualRspBufferSize;
  786. #define SendSRL_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  787. #define SendSRL_OUT_ActualRspBufferSize_ID 6
  788. //
  789. UCHAR RspBuffer[1];
  790. #define SendSRL_OUT_RspBuffer_ID 7
  791. } SendSRL_OUT, *PSendSRL_OUT;
  792. #define SendLIRR 13
  793. typedef struct _SendLIRR_IN
  794. {
  795. //
  796. UCHAR SourceWWN[8];
  797. #define SendLIRR_IN_SourceWWN_SIZE sizeof(UCHAR[8])
  798. #define SendLIRR_IN_SourceWWN_ID 2
  799. //
  800. UCHAR DestWWN[8];
  801. #define SendLIRR_IN_DestWWN_SIZE sizeof(UCHAR[8])
  802. #define SendLIRR_IN_DestWWN_ID 3
  803. //
  804. UCHAR Function;
  805. #define SendLIRR_IN_Function_SIZE sizeof(UCHAR)
  806. #define SendLIRR_IN_Function_ID 4
  807. //
  808. UCHAR Type;
  809. #define SendLIRR_IN_Type_SIZE sizeof(UCHAR)
  810. #define SendLIRR_IN_Type_ID 5
  811. } SendLIRR_IN, *PSendLIRR_IN;
  812. #define SendLIRR_IN_SIZE (FIELD_OFFSET(SendLIRR_IN, Type) + SendLIRR_IN_Type_SIZE)
  813. typedef struct _SendLIRR_OUT
  814. {
  815. // HBA Status result for the query operation
  816. ULONG HBAStatus;
  817. #define SendLIRR_OUT_HBAStatus_SIZE sizeof(ULONG)
  818. #define SendLIRR_OUT_HBAStatus_ID 1
  819. //
  820. ULONG TotalRspBufferSize;
  821. #define SendLIRR_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  822. #define SendLIRR_OUT_TotalRspBufferSize_ID 6
  823. //
  824. ULONG ActualRspBufferSize;
  825. #define SendLIRR_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  826. #define SendLIRR_OUT_ActualRspBufferSize_ID 7
  827. //
  828. UCHAR RspBuffer[1];
  829. #define SendLIRR_OUT_RspBuffer_ID 8
  830. } SendLIRR_OUT, *PSendLIRR_OUT;
  831. #define GetFC4Statistics 14
  832. typedef struct _GetFC4Statistics_IN
  833. {
  834. //
  835. UCHAR PortWWN[8];
  836. #define GetFC4Statistics_IN_PortWWN_SIZE sizeof(UCHAR[8])
  837. #define GetFC4Statistics_IN_PortWWN_ID 2
  838. //
  839. UCHAR FC4Type;
  840. #define GetFC4Statistics_IN_FC4Type_SIZE sizeof(UCHAR)
  841. #define GetFC4Statistics_IN_FC4Type_ID 3
  842. } GetFC4Statistics_IN, *PGetFC4Statistics_IN;
  843. #define GetFC4Statistics_IN_SIZE (FIELD_OFFSET(GetFC4Statistics_IN, FC4Type) + GetFC4Statistics_IN_FC4Type_SIZE)
  844. typedef struct _GetFC4Statistics_OUT
  845. {
  846. // HBA Status result for the query operation
  847. ULONG HBAStatus;
  848. #define GetFC4Statistics_OUT_HBAStatus_SIZE sizeof(ULONG)
  849. #define GetFC4Statistics_OUT_HBAStatus_ID 1
  850. //
  851. MSFC_FC4STATISTICS FC4Statistics;
  852. #define GetFC4Statistics_OUT_FC4Statistics_SIZE sizeof(MSFC_FC4STATISTICS)
  853. #define GetFC4Statistics_OUT_FC4Statistics_ID 4
  854. } GetFC4Statistics_OUT, *PGetFC4Statistics_OUT;
  855. #define GetFC4Statistics_OUT_SIZE (FIELD_OFFSET(GetFC4Statistics_OUT, FC4Statistics) + GetFC4Statistics_OUT_FC4Statistics_SIZE)
  856. #define GetFCPStatistics 15
  857. typedef struct _GetFCPStatistics_IN
  858. {
  859. //
  860. HBAScsiID ScsiId;
  861. #define GetFCPStatistics_IN_ScsiId_SIZE sizeof(HBAScsiID)
  862. #define GetFCPStatistics_IN_ScsiId_ID 2
  863. } GetFCPStatistics_IN, *PGetFCPStatistics_IN;
  864. #define GetFCPStatistics_IN_SIZE (FIELD_OFFSET(GetFCPStatistics_IN, ScsiId) + GetFCPStatistics_IN_ScsiId_SIZE)
  865. typedef struct _GetFCPStatistics_OUT
  866. {
  867. // HBA Status result for the query operation
  868. ULONG HBAStatus;
  869. #define GetFCPStatistics_OUT_HBAStatus_SIZE sizeof(ULONG)
  870. #define GetFCPStatistics_OUT_HBAStatus_ID 1
  871. //
  872. MSFC_FC4STATISTICS FC4Statistics;
  873. #define GetFCPStatistics_OUT_FC4Statistics_SIZE sizeof(MSFC_FC4STATISTICS)
  874. #define GetFCPStatistics_OUT_FC4Statistics_ID 3
  875. } GetFCPStatistics_OUT, *PGetFCPStatistics_OUT;
  876. #define GetFCPStatistics_OUT_SIZE (FIELD_OFFSET(GetFCPStatistics_OUT, FC4Statistics) + GetFCPStatistics_OUT_FC4Statistics_SIZE)
  877. #define ScsiInquiry 16
  878. typedef struct _ScsiInquiry_IN
  879. {
  880. //
  881. UCHAR Cdb[6];
  882. #define ScsiInquiry_IN_Cdb_SIZE sizeof(UCHAR[6])
  883. #define ScsiInquiry_IN_Cdb_ID 2
  884. //
  885. UCHAR HbaPortWWN[8];
  886. #define ScsiInquiry_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  887. #define ScsiInquiry_IN_HbaPortWWN_ID 3
  888. //
  889. UCHAR DiscoveredPortWWN[8];
  890. #define ScsiInquiry_IN_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  891. #define ScsiInquiry_IN_DiscoveredPortWWN_ID 4
  892. //
  893. ULONGLONG FcLun;
  894. #define ScsiInquiry_IN_FcLun_SIZE sizeof(ULONGLONG)
  895. #define ScsiInquiry_IN_FcLun_ID 5
  896. } ScsiInquiry_IN, *PScsiInquiry_IN;
  897. #define ScsiInquiry_IN_SIZE (FIELD_OFFSET(ScsiInquiry_IN, FcLun) + ScsiInquiry_IN_FcLun_SIZE)
  898. typedef struct _ScsiInquiry_OUT
  899. {
  900. // HBA Status result for the query operation
  901. ULONG HBAStatus;
  902. #define ScsiInquiry_OUT_HBAStatus_SIZE sizeof(ULONG)
  903. #define ScsiInquiry_OUT_HBAStatus_ID 1
  904. //
  905. ULONG ResponseBufferSize;
  906. #define ScsiInquiry_OUT_ResponseBufferSize_SIZE sizeof(ULONG)
  907. #define ScsiInquiry_OUT_ResponseBufferSize_ID 6
  908. //
  909. ULONG SenseBufferSize;
  910. #define ScsiInquiry_OUT_SenseBufferSize_SIZE sizeof(ULONG)
  911. #define ScsiInquiry_OUT_SenseBufferSize_ID 7
  912. //
  913. UCHAR ScsiStatus;
  914. #define ScsiInquiry_OUT_ScsiStatus_SIZE sizeof(UCHAR)
  915. #define ScsiInquiry_OUT_ScsiStatus_ID 8
  916. //
  917. UCHAR ResponseBuffer[1];
  918. #define ScsiInquiry_OUT_ResponseBuffer_ID 9
  919. //
  920. // UCHAR SenseBuffer[1];
  921. #define ScsiInquiry_OUT_SenseBuffer_ID 10
  922. } ScsiInquiry_OUT, *PScsiInquiry_OUT;
  923. #define ScsiReadCapacity 17
  924. typedef struct _ScsiReadCapacity_IN
  925. {
  926. //
  927. UCHAR Cdb[10];
  928. #define ScsiReadCapacity_IN_Cdb_SIZE sizeof(UCHAR[10])
  929. #define ScsiReadCapacity_IN_Cdb_ID 2
  930. //
  931. UCHAR HbaPortWWN[8];
  932. #define ScsiReadCapacity_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  933. #define ScsiReadCapacity_IN_HbaPortWWN_ID 3
  934. //
  935. UCHAR DiscoveredPortWWN[8];
  936. #define ScsiReadCapacity_IN_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  937. #define ScsiReadCapacity_IN_DiscoveredPortWWN_ID 4
  938. //
  939. ULONGLONG FcLun;
  940. #define ScsiReadCapacity_IN_FcLun_SIZE sizeof(ULONGLONG)
  941. #define ScsiReadCapacity_IN_FcLun_ID 5
  942. } ScsiReadCapacity_IN, *PScsiReadCapacity_IN;
  943. #define ScsiReadCapacity_IN_SIZE (FIELD_OFFSET(ScsiReadCapacity_IN, FcLun) + ScsiReadCapacity_IN_FcLun_SIZE)
  944. typedef struct _ScsiReadCapacity_OUT
  945. {
  946. // HBA Status result for the query operation
  947. ULONG HBAStatus;
  948. #define ScsiReadCapacity_OUT_HBAStatus_SIZE sizeof(ULONG)
  949. #define ScsiReadCapacity_OUT_HBAStatus_ID 1
  950. //
  951. ULONG ResponseBufferSize;
  952. #define ScsiReadCapacity_OUT_ResponseBufferSize_SIZE sizeof(ULONG)
  953. #define ScsiReadCapacity_OUT_ResponseBufferSize_ID 6
  954. //
  955. ULONG SenseBufferSize;
  956. #define ScsiReadCapacity_OUT_SenseBufferSize_SIZE sizeof(ULONG)
  957. #define ScsiReadCapacity_OUT_SenseBufferSize_ID 7
  958. //
  959. UCHAR ScsiStatus;
  960. #define ScsiReadCapacity_OUT_ScsiStatus_SIZE sizeof(UCHAR)
  961. #define ScsiReadCapacity_OUT_ScsiStatus_ID 8
  962. //
  963. UCHAR ResponseBuffer[1];
  964. #define ScsiReadCapacity_OUT_ResponseBuffer_ID 9
  965. //
  966. // UCHAR SenseBuffer[1];
  967. #define ScsiReadCapacity_OUT_SenseBuffer_ID 10
  968. } ScsiReadCapacity_OUT, *PScsiReadCapacity_OUT;
  969. #define ScsiReportLuns 18
  970. typedef struct _ScsiReportLuns_IN
  971. {
  972. //
  973. UCHAR Cdb[12];
  974. #define ScsiReportLuns_IN_Cdb_SIZE sizeof(UCHAR[12])
  975. #define ScsiReportLuns_IN_Cdb_ID 2
  976. //
  977. UCHAR HbaPortWWN[8];
  978. #define ScsiReportLuns_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  979. #define ScsiReportLuns_IN_HbaPortWWN_ID 3
  980. //
  981. UCHAR DiscoveredPortWWN[8];
  982. #define ScsiReportLuns_IN_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  983. #define ScsiReportLuns_IN_DiscoveredPortWWN_ID 4
  984. } ScsiReportLuns_IN, *PScsiReportLuns_IN;
  985. #define ScsiReportLuns_IN_SIZE (FIELD_OFFSET(ScsiReportLuns_IN, DiscoveredPortWWN) + ScsiReportLuns_IN_DiscoveredPortWWN_SIZE)
  986. typedef struct _ScsiReportLuns_OUT
  987. {
  988. // HBA Status result for the query operation
  989. ULONG HBAStatus;
  990. #define ScsiReportLuns_OUT_HBAStatus_SIZE sizeof(ULONG)
  991. #define ScsiReportLuns_OUT_HBAStatus_ID 1
  992. //
  993. ULONG ResponseBufferSize;
  994. #define ScsiReportLuns_OUT_ResponseBufferSize_SIZE sizeof(ULONG)
  995. #define ScsiReportLuns_OUT_ResponseBufferSize_ID 5
  996. //
  997. ULONG SenseBufferSize;
  998. #define ScsiReportLuns_OUT_SenseBufferSize_SIZE sizeof(ULONG)
  999. #define ScsiReportLuns_OUT_SenseBufferSize_ID 6
  1000. //
  1001. UCHAR ScsiStatus;
  1002. #define ScsiReportLuns_OUT_ScsiStatus_SIZE sizeof(UCHAR)
  1003. #define ScsiReportLuns_OUT_ScsiStatus_ID 7
  1004. //
  1005. UCHAR ResponseBuffer[1];
  1006. #define ScsiReportLuns_OUT_ResponseBuffer_ID 8
  1007. //
  1008. // UCHAR SenseBuffer[1];
  1009. #define ScsiReportLuns_OUT_SenseBuffer_ID 9
  1010. } ScsiReportLuns_OUT, *PScsiReportLuns_OUT;
  1011. #define GetVendorLibraryAttributes 19
  1012. typedef struct _GetVendorLibraryAttributes_OUT
  1013. {
  1014. // HBA Status result for the query operation
  1015. ULONG HBAStatus;
  1016. #define GetVendorLibraryAttributes_OUT_HBAStatus_SIZE sizeof(ULONG)
  1017. #define GetVendorLibraryAttributes_OUT_HBAStatus_ID 1
  1018. //
  1019. ULONG HbaVersion;
  1020. #define GetVendorLibraryAttributes_OUT_HbaVersion_SIZE sizeof(ULONG)
  1021. #define GetVendorLibraryAttributes_OUT_HbaVersion_ID 2
  1022. // Is Final
  1023. BOOLEAN Final;
  1024. #define GetVendorLibraryAttributes_OUT_Final_SIZE sizeof(BOOLEAN)
  1025. #define GetVendorLibraryAttributes_OUT_Final_ID 3
  1026. // LibPath
  1027. WCHAR LibPath[256 + 1];
  1028. #define GetVendorLibraryAttributes_OUT_LibPath_ID 4
  1029. // Vendor Name
  1030. WCHAR VName[256 + 1];
  1031. #define GetVendorLibraryAttributes_OUT_VName_ID 5
  1032. // Vendor Version
  1033. WCHAR VVersion[256 + 1];
  1034. #define GetVendorLibraryAttributes_OUT_VVersion_ID 6
  1035. // Build date
  1036. MSFC_TM tm;
  1037. #define GetVendorLibraryAttributes_OUT_tm_SIZE sizeof(MSFC_TM)
  1038. #define GetVendorLibraryAttributes_OUT_tm_ID 7
  1039. } GetVendorLibraryAttributes_OUT, *PGetVendorLibraryAttributes_OUT;
  1040. #define GetVendorLibraryAttributes_OUT_SIZE (FIELD_OFFSET(GetVendorLibraryAttributes_OUT, tm) + GetVendorLibraryAttributes_OUT_tm_SIZE)
  1041. #define GetEventBuffer 20
  1042. typedef struct _GetEventBuffer_OUT
  1043. {
  1044. // HBA Status result for the query operation
  1045. ULONG HBAStatus;
  1046. #define GetEventBuffer_OUT_HBAStatus_SIZE sizeof(ULONG)
  1047. #define GetEventBuffer_OUT_HBAStatus_ID 1
  1048. //
  1049. ULONG EventCount;
  1050. #define GetEventBuffer_OUT_EventCount_SIZE sizeof(ULONG)
  1051. #define GetEventBuffer_OUT_EventCount_ID 2
  1052. //
  1053. MSFC_EventBuffer Events[1];
  1054. #define GetEventBuffer_OUT_Events_ID 3
  1055. } GetEventBuffer_OUT, *PGetEventBuffer_OUT;
  1056. #define SendRLS 21
  1057. typedef struct _SendRLS_IN
  1058. {
  1059. //
  1060. UCHAR PortWWN[8];
  1061. #define SendRLS_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1062. #define SendRLS_IN_PortWWN_ID 2
  1063. //
  1064. UCHAR DestWWN[8];
  1065. #define SendRLS_IN_DestWWN_SIZE sizeof(UCHAR[8])
  1066. #define SendRLS_IN_DestWWN_ID 3
  1067. } SendRLS_IN, *PSendRLS_IN;
  1068. #define SendRLS_IN_SIZE (FIELD_OFFSET(SendRLS_IN, DestWWN) + SendRLS_IN_DestWWN_SIZE)
  1069. typedef struct _SendRLS_OUT
  1070. {
  1071. // HBA Status result for the query operation
  1072. ULONG HBAStatus;
  1073. #define SendRLS_OUT_HBAStatus_SIZE sizeof(ULONG)
  1074. #define SendRLS_OUT_HBAStatus_ID 1
  1075. //
  1076. ULONG TotalRspBufferSize;
  1077. #define SendRLS_OUT_TotalRspBufferSize_SIZE sizeof(ULONG)
  1078. #define SendRLS_OUT_TotalRspBufferSize_ID 4
  1079. //
  1080. ULONG ActualRspBufferSize;
  1081. #define SendRLS_OUT_ActualRspBufferSize_SIZE sizeof(ULONG)
  1082. #define SendRLS_OUT_ActualRspBufferSize_ID 5
  1083. //
  1084. UCHAR RspBuffer[1];
  1085. #define SendRLS_OUT_RspBuffer_ID 6
  1086. } SendRLS_OUT, *PSendRLS_OUT;
  1087. // HBAFCPID - HBAFCPID
  1088. #define HBAFCPIDGuid \
  1089. { 0xff02bc96,0x7fb0,0x4bac, { 0x8f,0x97,0xc7,0x1e,0x49,0x5f,0xa6,0x98 } }
  1090. #if ! (defined(MIDL_PASS))
  1091. DEFINE_GUID(HBAFCPID_GUID, \
  1092. 0xff02bc96,0x7fb0,0x4bac,0x8f,0x97,0xc7,0x1e,0x49,0x5f,0xa6,0x98);
  1093. #endif
  1094. typedef struct _HBAFCPID
  1095. {
  1096. //
  1097. ULONG Fcid;
  1098. #define HBAFCPID_Fcid_SIZE sizeof(ULONG)
  1099. #define HBAFCPID_Fcid_ID 1
  1100. //
  1101. UCHAR NodeWWN[8];
  1102. #define HBAFCPID_NodeWWN_SIZE sizeof(UCHAR[8])
  1103. #define HBAFCPID_NodeWWN_ID 2
  1104. //
  1105. UCHAR PortWWN[8];
  1106. #define HBAFCPID_PortWWN_SIZE sizeof(UCHAR[8])
  1107. #define HBAFCPID_PortWWN_ID 3
  1108. //
  1109. ULONGLONG FcpLun;
  1110. #define HBAFCPID_FcpLun_SIZE sizeof(ULONGLONG)
  1111. #define HBAFCPID_FcpLun_ID 4
  1112. } HBAFCPID, *PHBAFCPID;
  1113. #define HBAFCPID_SIZE (FIELD_OFFSET(HBAFCPID, FcpLun) + HBAFCPID_FcpLun_SIZE)
  1114. // HBAFCPScsiEntry - HBAFCPScsiEntry
  1115. #define HBAFCPScsiEntryGuid \
  1116. { 0x77ca1248,0x1505,0x4221, { 0x8e,0xb6,0xbb,0xb6,0xec,0x77,0x1a,0x87 } }
  1117. #if ! (defined(MIDL_PASS))
  1118. DEFINE_GUID(HBAFCPScsiEntry_GUID, \
  1119. 0x77ca1248,0x1505,0x4221,0x8e,0xb6,0xbb,0xb6,0xec,0x77,0x1a,0x87);
  1120. #endif
  1121. typedef struct _HBAFCPScsiEntry
  1122. {
  1123. //
  1124. HBAScsiID ScsiId;
  1125. #define HBAFCPScsiEntry_ScsiId_SIZE sizeof(HBAScsiID)
  1126. #define HBAFCPScsiEntry_ScsiId_ID 1
  1127. //
  1128. HBAFCPID FCPId;
  1129. #define HBAFCPScsiEntry_FCPId_SIZE sizeof(HBAFCPID)
  1130. #define HBAFCPScsiEntry_FCPId_ID 2
  1131. //
  1132. UCHAR Luid[256];
  1133. #define HBAFCPScsiEntry_Luid_SIZE sizeof(UCHAR[256])
  1134. #define HBAFCPScsiEntry_Luid_ID 3
  1135. } HBAFCPScsiEntry, *PHBAFCPScsiEntry;
  1136. #define HBAFCPScsiEntry_SIZE (FIELD_OFFSET(HBAFCPScsiEntry, Luid) + HBAFCPScsiEntry_Luid_SIZE)
  1137. // HBAFCPBindingEntry - HBAFCPBindingEntry
  1138. #define HBAFCPBindingEntryGuid \
  1139. { 0xfceff8b7,0x9d6b,0x4115, { 0x84,0x22,0x05,0x99,0x24,0x51,0xa6,0x29 } }
  1140. #if ! (defined(MIDL_PASS))
  1141. DEFINE_GUID(HBAFCPBindingEntry_GUID, \
  1142. 0xfceff8b7,0x9d6b,0x4115,0x84,0x22,0x05,0x99,0x24,0x51,0xa6,0x29);
  1143. #endif
  1144. typedef struct _HBAFCPBindingEntry
  1145. {
  1146. //
  1147. ULONG Type;
  1148. #define HBAFCPBindingEntry_Type_SIZE sizeof(ULONG)
  1149. #define HBAFCPBindingEntry_Type_ID 1
  1150. //
  1151. HBAScsiID ScsiId;
  1152. #define HBAFCPBindingEntry_ScsiId_SIZE sizeof(HBAScsiID)
  1153. #define HBAFCPBindingEntry_ScsiId_ID 2
  1154. //
  1155. HBAFCPID FCPId;
  1156. #define HBAFCPBindingEntry_FCPId_SIZE sizeof(HBAFCPID)
  1157. #define HBAFCPBindingEntry_FCPId_ID 3
  1158. } HBAFCPBindingEntry, *PHBAFCPBindingEntry;
  1159. #define HBAFCPBindingEntry_SIZE (FIELD_OFFSET(HBAFCPBindingEntry, FCPId) + HBAFCPBindingEntry_FCPId_SIZE)
  1160. // HBAFCPBindingEntry2 - HBAFCPBindingEntry2
  1161. #define HBAFCPBindingEntry2Guid \
  1162. { 0x3a1e7679,0x4b1f,0x4f31, { 0xa8,0xae,0xfe,0x92,0x78,0x73,0x09,0x24 } }
  1163. #if ! (defined(MIDL_PASS))
  1164. DEFINE_GUID(HBAFCPBindingEntry2_GUID, \
  1165. 0x3a1e7679,0x4b1f,0x4f31,0xa8,0xae,0xfe,0x92,0x78,0x73,0x09,0x24);
  1166. #endif
  1167. typedef struct _HBAFCPBindingEntry2
  1168. {
  1169. // Ways of performing persistent binding
  1170. ULONG Type;
  1171. #define HBAFCPBindingEntry2_Type_SIZE sizeof(ULONG)
  1172. #define HBAFCPBindingEntry2_Type_ID 1
  1173. //
  1174. HBAScsiID ScsiId;
  1175. #define HBAFCPBindingEntry2_ScsiId_SIZE sizeof(HBAScsiID)
  1176. #define HBAFCPBindingEntry2_ScsiId_ID 2
  1177. //
  1178. HBAFCPID FCPId;
  1179. #define HBAFCPBindingEntry2_FCPId_SIZE sizeof(HBAFCPID)
  1180. #define HBAFCPBindingEntry2_FCPId_ID 3
  1181. //
  1182. UCHAR Luid[256];
  1183. #define HBAFCPBindingEntry2_Luid_SIZE sizeof(UCHAR[256])
  1184. #define HBAFCPBindingEntry2_Luid_ID 4
  1185. } HBAFCPBindingEntry2, *PHBAFCPBindingEntry2;
  1186. #define HBAFCPBindingEntry2_SIZE (FIELD_OFFSET(HBAFCPBindingEntry2, Luid) + HBAFCPBindingEntry2_Luid_SIZE)
  1187. // MSFC_HBAFCPInfo - MSFC_HBAFCPInfo
  1188. // This class exposes operations associated with FCP on a Fibre Channel adapter. There should be one instance of this class for each adapter.
  1189. #define MSFC_HBAFCPInfoGuid \
  1190. { 0x7a1fc391,0x5b23,0x4c19, { 0xb0,0xeb,0xb1,0xae,0xf5,0x90,0x50,0xc3 } }
  1191. #if ! (defined(MIDL_PASS))
  1192. DEFINE_GUID(MSFC_HBAFCPInfo_GUID, \
  1193. 0x7a1fc391,0x5b23,0x4c19,0xb0,0xeb,0xb1,0xae,0xf5,0x90,0x50,0xc3);
  1194. #endif
  1195. //
  1196. // Method id definitions for MSFC_HBAFCPInfo
  1197. #define GetFcpTargetMapping 1
  1198. typedef struct _GetFcpTargetMapping_IN
  1199. {
  1200. //
  1201. UCHAR HbaPortWWN[8];
  1202. #define GetFcpTargetMapping_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  1203. #define GetFcpTargetMapping_IN_HbaPortWWN_ID 2
  1204. //
  1205. ULONG TotalEntryCount;
  1206. #define GetFcpTargetMapping_IN_TotalEntryCount_SIZE sizeof(ULONG)
  1207. #define GetFcpTargetMapping_IN_TotalEntryCount_ID 3
  1208. } GetFcpTargetMapping_IN, *PGetFcpTargetMapping_IN;
  1209. #define GetFcpTargetMapping_IN_SIZE (FIELD_OFFSET(GetFcpTargetMapping_IN, TotalEntryCount) + GetFcpTargetMapping_IN_TotalEntryCount_SIZE)
  1210. typedef struct _GetFcpTargetMapping_OUT
  1211. {
  1212. // HBA Status result for the query operation
  1213. ULONG HBAStatus;
  1214. #define GetFcpTargetMapping_OUT_HBAStatus_SIZE sizeof(ULONG)
  1215. #define GetFcpTargetMapping_OUT_HBAStatus_ID 1
  1216. //
  1217. ULONG TotalEntryCount;
  1218. #define GetFcpTargetMapping_OUT_TotalEntryCount_SIZE sizeof(ULONG)
  1219. #define GetFcpTargetMapping_OUT_TotalEntryCount_ID 3
  1220. //
  1221. ULONG ActualEntryCount;
  1222. #define GetFcpTargetMapping_OUT_ActualEntryCount_SIZE sizeof(ULONG)
  1223. #define GetFcpTargetMapping_OUT_ActualEntryCount_ID 4
  1224. //
  1225. HBAFCPScsiEntry Entry[1];
  1226. #define GetFcpTargetMapping_OUT_Entry_ID 5
  1227. } GetFcpTargetMapping_OUT, *PGetFcpTargetMapping_OUT;
  1228. #define GetFcpPersistentBinding 2
  1229. typedef struct _GetFcpPersistentBinding_IN
  1230. {
  1231. //
  1232. ULONG EntryCount;
  1233. #define GetFcpPersistentBinding_IN_EntryCount_SIZE sizeof(ULONG)
  1234. #define GetFcpPersistentBinding_IN_EntryCount_ID 2
  1235. } GetFcpPersistentBinding_IN, *PGetFcpPersistentBinding_IN;
  1236. #define GetFcpPersistentBinding_IN_SIZE (FIELD_OFFSET(GetFcpPersistentBinding_IN, EntryCount) + GetFcpPersistentBinding_IN_EntryCount_SIZE)
  1237. typedef struct _GetFcpPersistentBinding_OUT
  1238. {
  1239. // HBA Status result for the query operation
  1240. ULONG HBAStatus;
  1241. #define GetFcpPersistentBinding_OUT_HBAStatus_SIZE sizeof(ULONG)
  1242. #define GetFcpPersistentBinding_OUT_HBAStatus_ID 1
  1243. //
  1244. ULONG EntryCount;
  1245. #define GetFcpPersistentBinding_OUT_EntryCount_SIZE sizeof(ULONG)
  1246. #define GetFcpPersistentBinding_OUT_EntryCount_ID 2
  1247. //
  1248. HBAFCPBindingEntry Entry[1];
  1249. #define GetFcpPersistentBinding_OUT_Entry_ID 3
  1250. } GetFcpPersistentBinding_OUT, *PGetFcpPersistentBinding_OUT;
  1251. #define GetBindingCapability 3
  1252. typedef struct _GetBindingCapability_IN
  1253. {
  1254. //
  1255. UCHAR PortWWN[8];
  1256. #define GetBindingCapability_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1257. #define GetBindingCapability_IN_PortWWN_ID 2
  1258. } GetBindingCapability_IN, *PGetBindingCapability_IN;
  1259. #define GetBindingCapability_IN_SIZE (FIELD_OFFSET(GetBindingCapability_IN, PortWWN) + GetBindingCapability_IN_PortWWN_SIZE)
  1260. typedef struct _GetBindingCapability_OUT
  1261. {
  1262. // HBA Status result for the query operation
  1263. ULONG HBAStatus;
  1264. #define GetBindingCapability_OUT_HBAStatus_SIZE sizeof(ULONG)
  1265. #define GetBindingCapability_OUT_HBAStatus_ID 1
  1266. // Ways of performing persistent binding
  1267. ULONG BindType;
  1268. #define GetBindingCapability_OUT_BindType_SIZE sizeof(ULONG)
  1269. #define GetBindingCapability_OUT_BindType_ID 3
  1270. } GetBindingCapability_OUT, *PGetBindingCapability_OUT;
  1271. #define GetBindingCapability_OUT_SIZE (FIELD_OFFSET(GetBindingCapability_OUT, BindType) + GetBindingCapability_OUT_BindType_SIZE)
  1272. #define GetBindingSupport 4
  1273. typedef struct _GetBindingSupport_IN
  1274. {
  1275. //
  1276. UCHAR PortWWN[8];
  1277. #define GetBindingSupport_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1278. #define GetBindingSupport_IN_PortWWN_ID 2
  1279. } GetBindingSupport_IN, *PGetBindingSupport_IN;
  1280. #define GetBindingSupport_IN_SIZE (FIELD_OFFSET(GetBindingSupport_IN, PortWWN) + GetBindingSupport_IN_PortWWN_SIZE)
  1281. typedef struct _GetBindingSupport_OUT
  1282. {
  1283. // HBA Status result for the query operation
  1284. ULONG HBAStatus;
  1285. #define GetBindingSupport_OUT_HBAStatus_SIZE sizeof(ULONG)
  1286. #define GetBindingSupport_OUT_HBAStatus_ID 1
  1287. // Ways of performing persistent binding
  1288. ULONG BindType;
  1289. #define GetBindingSupport_OUT_BindType_SIZE sizeof(ULONG)
  1290. #define GetBindingSupport_OUT_BindType_ID 3
  1291. } GetBindingSupport_OUT, *PGetBindingSupport_OUT;
  1292. #define GetBindingSupport_OUT_SIZE (FIELD_OFFSET(GetBindingSupport_OUT, BindType) + GetBindingSupport_OUT_BindType_SIZE)
  1293. #define SetBindingSupport 5
  1294. typedef struct _SetBindingSupport_IN
  1295. {
  1296. //
  1297. UCHAR PortWWN[8];
  1298. #define SetBindingSupport_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1299. #define SetBindingSupport_IN_PortWWN_ID 2
  1300. // Ways of performing persistent binding
  1301. ULONG BindType;
  1302. #define SetBindingSupport_IN_BindType_SIZE sizeof(ULONG)
  1303. #define SetBindingSupport_IN_BindType_ID 3
  1304. } SetBindingSupport_IN, *PSetBindingSupport_IN;
  1305. #define SetBindingSupport_IN_SIZE (FIELD_OFFSET(SetBindingSupport_IN, BindType) + SetBindingSupport_IN_BindType_SIZE)
  1306. typedef struct _SetBindingSupport_OUT
  1307. {
  1308. // HBA Status result for the query operation
  1309. ULONG HBAStatus;
  1310. #define SetBindingSupport_OUT_HBAStatus_SIZE sizeof(ULONG)
  1311. #define SetBindingSupport_OUT_HBAStatus_ID 1
  1312. } SetBindingSupport_OUT, *PSetBindingSupport_OUT;
  1313. #define SetBindingSupport_OUT_SIZE (FIELD_OFFSET(SetBindingSupport_OUT, HBAStatus) + SetBindingSupport_OUT_HBAStatus_SIZE)
  1314. #define SetPersistentBinding2 6
  1315. typedef struct _SetPersistentBinding2_IN
  1316. {
  1317. //
  1318. UCHAR PortWWN[8];
  1319. #define SetPersistentBinding2_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1320. #define SetPersistentBinding2_IN_PortWWN_ID 2
  1321. //
  1322. ULONG EntryCount;
  1323. #define SetPersistentBinding2_IN_EntryCount_SIZE sizeof(ULONG)
  1324. #define SetPersistentBinding2_IN_EntryCount_ID 3
  1325. //
  1326. HBAFCPBindingEntry2 Bindings[1];
  1327. #define SetPersistentBinding2_IN_Bindings_ID 4
  1328. } SetPersistentBinding2_IN, *PSetPersistentBinding2_IN;
  1329. typedef struct _SetPersistentBinding2_OUT
  1330. {
  1331. // HBA Status result for the query operation
  1332. ULONG HBAStatus;
  1333. #define SetPersistentBinding2_OUT_HBAStatus_SIZE sizeof(ULONG)
  1334. #define SetPersistentBinding2_OUT_HBAStatus_ID 1
  1335. } SetPersistentBinding2_OUT, *PSetPersistentBinding2_OUT;
  1336. #define SetPersistentBinding2_OUT_SIZE (FIELD_OFFSET(SetPersistentBinding2_OUT, HBAStatus) + SetPersistentBinding2_OUT_HBAStatus_SIZE)
  1337. #define GetPersistentBinding2 7
  1338. typedef struct _GetPersistentBinding2_IN
  1339. {
  1340. //
  1341. UCHAR PortWWN[8];
  1342. #define GetPersistentBinding2_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1343. #define GetPersistentBinding2_IN_PortWWN_ID 2
  1344. //
  1345. ULONG EntryCount;
  1346. #define GetPersistentBinding2_IN_EntryCount_SIZE sizeof(ULONG)
  1347. #define GetPersistentBinding2_IN_EntryCount_ID 3
  1348. } GetPersistentBinding2_IN, *PGetPersistentBinding2_IN;
  1349. #define GetPersistentBinding2_IN_SIZE (FIELD_OFFSET(GetPersistentBinding2_IN, EntryCount) + GetPersistentBinding2_IN_EntryCount_SIZE)
  1350. typedef struct _GetPersistentBinding2_OUT
  1351. {
  1352. // HBA Status result for the query operation
  1353. ULONG HBAStatus;
  1354. #define GetPersistentBinding2_OUT_HBAStatus_SIZE sizeof(ULONG)
  1355. #define GetPersistentBinding2_OUT_HBAStatus_ID 1
  1356. //
  1357. ULONG EntryCount;
  1358. #define GetPersistentBinding2_OUT_EntryCount_SIZE sizeof(ULONG)
  1359. #define GetPersistentBinding2_OUT_EntryCount_ID 3
  1360. //
  1361. HBAFCPBindingEntry2 Bindings[1];
  1362. #define GetPersistentBinding2_OUT_Bindings_ID 4
  1363. } GetPersistentBinding2_OUT, *PGetPersistentBinding2_OUT;
  1364. #define SetPersistentEntry 8
  1365. typedef struct _SetPersistentEntry_IN
  1366. {
  1367. //
  1368. HBAFCPBindingEntry2 Binding;
  1369. #define SetPersistentEntry_IN_Binding_SIZE sizeof(HBAFCPBindingEntry2)
  1370. #define SetPersistentEntry_IN_Binding_ID 2
  1371. } SetPersistentEntry_IN, *PSetPersistentEntry_IN;
  1372. #define SetPersistentEntry_IN_SIZE (FIELD_OFFSET(SetPersistentEntry_IN, Binding) + SetPersistentEntry_IN_Binding_SIZE)
  1373. typedef struct _SetPersistentEntry_OUT
  1374. {
  1375. // HBA Status result for the query operation
  1376. ULONG HBAStatus;
  1377. #define SetPersistentEntry_OUT_HBAStatus_SIZE sizeof(ULONG)
  1378. #define SetPersistentEntry_OUT_HBAStatus_ID 1
  1379. } SetPersistentEntry_OUT, *PSetPersistentEntry_OUT;
  1380. #define SetPersistentEntry_OUT_SIZE (FIELD_OFFSET(SetPersistentEntry_OUT, HBAStatus) + SetPersistentEntry_OUT_HBAStatus_SIZE)
  1381. #define RemovePersistentEntry 9
  1382. typedef struct _RemovePersistentEntry_IN
  1383. {
  1384. //
  1385. HBAFCPBindingEntry2 Binding;
  1386. #define RemovePersistentEntry_IN_Binding_SIZE sizeof(HBAFCPBindingEntry2)
  1387. #define RemovePersistentEntry_IN_Binding_ID 2
  1388. } RemovePersistentEntry_IN, *PRemovePersistentEntry_IN;
  1389. #define RemovePersistentEntry_IN_SIZE (FIELD_OFFSET(RemovePersistentEntry_IN, Binding) + RemovePersistentEntry_IN_Binding_SIZE)
  1390. typedef struct _RemovePersistentEntry_OUT
  1391. {
  1392. // HBA Status result for the query operation
  1393. ULONG HBAStatus;
  1394. #define RemovePersistentEntry_OUT_HBAStatus_SIZE sizeof(ULONG)
  1395. #define RemovePersistentEntry_OUT_HBAStatus_ID 1
  1396. } RemovePersistentEntry_OUT, *PRemovePersistentEntry_OUT;
  1397. #define RemovePersistentEntry_OUT_SIZE (FIELD_OFFSET(RemovePersistentEntry_OUT, HBAStatus) + RemovePersistentEntry_OUT_HBAStatus_SIZE)
  1398. // MSFC_AdapterEvent - MSFC_AdapterEvent
  1399. // This class surfaces HBA adapter events
  1400. //
  1401. // Event types. These match the definitions in hbaapi.h and must be kept in sync
  1402. //
  1403. /* Adapter Level Events */
  1404. #define HBA_EVENT_ADAPTER_UNKNOWN 0x100
  1405. #define HBA_EVENT_ADAPTER_ADD 0x101
  1406. #define HBA_EVENT_ADAPTER_REMOVE 0x102
  1407. #define HBA_EVENT_ADAPTER_CHANGE 0x103
  1408. /* Port Level Events */
  1409. #define HBA_EVENT_PORT_UNKNOWN 0x200
  1410. #define HBA_EVENT_PORT_OFFLINE 0x201
  1411. #define HBA_EVENT_PORT_ONLINE 0x202
  1412. #define HBA_EVENT_PORT_NEW_TARGETS 0x203
  1413. #define HBA_EVENT_PORT_FABRIC 0x204
  1414. /* Port Statistics Events */
  1415. #define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
  1416. #define HBA_EVENT_PORT_STAT_GROWTH 0x302
  1417. /* Target Level Events */
  1418. #define HBA_EVENT_TARGET_UNKNOWN 0x400
  1419. #define HBA_EVENT_TARGET_OFFLINE 0x401
  1420. #define HBA_EVENT_TARGET_ONLINE 0x402
  1421. #define HBA_EVENT_TARGET_REMOVED 0x403
  1422. /* Fabric Link Events */
  1423. #define HBA_EVENT_LINK_UNKNOWN 0x500
  1424. #define HBA_EVENT_LINK_INCIDENT 0x501
  1425. #define MSFC_AdapterEventGuid \
  1426. { 0xe9e47403,0xd1d7,0x43f8, { 0x8e,0xe3,0x53,0xcd,0xbf,0xff,0x56,0x46 } }
  1427. #if ! (defined(MIDL_PASS))
  1428. DEFINE_GUID(MSFC_AdapterEvent_GUID, \
  1429. 0xe9e47403,0xd1d7,0x43f8,0x8e,0xe3,0x53,0xcd,0xbf,0xff,0x56,0x46);
  1430. #endif
  1431. typedef struct _MSFC_AdapterEvent
  1432. {
  1433. // Event Type
  1434. ULONG EventType;
  1435. #define MSFC_AdapterEvent_EventType_SIZE sizeof(ULONG)
  1436. #define MSFC_AdapterEvent_EventType_ID 1
  1437. // Adapter WWN
  1438. UCHAR PortWWN[8];
  1439. #define MSFC_AdapterEvent_PortWWN_SIZE sizeof(UCHAR[8])
  1440. #define MSFC_AdapterEvent_PortWWN_ID 2
  1441. } MSFC_AdapterEvent, *PMSFC_AdapterEvent;
  1442. #define MSFC_AdapterEvent_SIZE (FIELD_OFFSET(MSFC_AdapterEvent, PortWWN) + MSFC_AdapterEvent_PortWWN_SIZE)
  1443. // MSFC_PortEvent - MSFC_PortEvent
  1444. // This class surfaces HBA port events
  1445. #define MSFC_PortEventGuid \
  1446. { 0x095fbe97,0x3876,0x48ef, { 0x8a,0x04,0x1c,0x55,0x93,0x5d,0x0d,0xf5 } }
  1447. #if ! (defined(MIDL_PASS))
  1448. DEFINE_GUID(MSFC_PortEvent_GUID, \
  1449. 0x095fbe97,0x3876,0x48ef,0x8a,0x04,0x1c,0x55,0x93,0x5d,0x0d,0xf5);
  1450. #endif
  1451. typedef struct _MSFC_PortEvent
  1452. {
  1453. // Type of event
  1454. ULONG EventType;
  1455. #define MSFC_PortEvent_EventType_SIZE sizeof(ULONG)
  1456. #define MSFC_PortEvent_EventType_ID 1
  1457. // Fabric port id
  1458. ULONG FabricPortId;
  1459. #define MSFC_PortEvent_FabricPortId_SIZE sizeof(ULONG)
  1460. #define MSFC_PortEvent_FabricPortId_ID 2
  1461. // Port WWN
  1462. UCHAR PortWWN[8];
  1463. #define MSFC_PortEvent_PortWWN_SIZE sizeof(UCHAR[8])
  1464. #define MSFC_PortEvent_PortWWN_ID 3
  1465. } MSFC_PortEvent, *PMSFC_PortEvent;
  1466. #define MSFC_PortEvent_SIZE (FIELD_OFFSET(MSFC_PortEvent, PortWWN) + MSFC_PortEvent_PortWWN_SIZE)
  1467. // MSFC_TargetEvent - MSFC_TargetEvent
  1468. // This class surfaces HBA target events
  1469. #define MSFC_TargetEventGuid \
  1470. { 0xcfa6ef26,0x8675,0x4e27, { 0x9a,0x0b,0xb4,0xa8,0x60,0xdd,0xd0,0xf3 } }
  1471. #if ! (defined(MIDL_PASS))
  1472. DEFINE_GUID(MSFC_TargetEvent_GUID, \
  1473. 0xcfa6ef26,0x8675,0x4e27,0x9a,0x0b,0xb4,0xa8,0x60,0xdd,0xd0,0xf3);
  1474. #endif
  1475. typedef struct _MSFC_TargetEvent
  1476. {
  1477. // Type of event
  1478. ULONG EventType;
  1479. #define MSFC_TargetEvent_EventType_SIZE sizeof(ULONG)
  1480. #define MSFC_TargetEvent_EventType_ID 1
  1481. // Port WWN
  1482. UCHAR PortWWN[8];
  1483. #define MSFC_TargetEvent_PortWWN_SIZE sizeof(UCHAR[8])
  1484. #define MSFC_TargetEvent_PortWWN_ID 2
  1485. // Discovered Port WWN
  1486. UCHAR DiscoveredPortWWN[8];
  1487. #define MSFC_TargetEvent_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  1488. #define MSFC_TargetEvent_DiscoveredPortWWN_ID 3
  1489. } MSFC_TargetEvent, *PMSFC_TargetEvent;
  1490. #define MSFC_TargetEvent_SIZE (FIELD_OFFSET(MSFC_TargetEvent, DiscoveredPortWWN) + MSFC_TargetEvent_DiscoveredPortWWN_SIZE)
  1491. // MSFC_LinkEvent - MSFC_LinkEvent
  1492. // This class surfaces HBA link events
  1493. #define MSFC_LinkEventGuid \
  1494. { 0xc66015ee,0x014b,0x498a, { 0x94,0x51,0x99,0xfe,0xad,0x0a,0xb4,0x51 } }
  1495. #if ! (defined(MIDL_PASS))
  1496. DEFINE_GUID(MSFC_LinkEvent_GUID, \
  1497. 0xc66015ee,0x014b,0x498a,0x94,0x51,0x99,0xfe,0xad,0x0a,0xb4,0x51);
  1498. #endif
  1499. typedef struct _MSFC_LinkEvent
  1500. {
  1501. // Type of event
  1502. ULONG EventType;
  1503. #define MSFC_LinkEvent_EventType_SIZE sizeof(ULONG)
  1504. #define MSFC_LinkEvent_EventType_ID 1
  1505. // Discovered Port WWN
  1506. UCHAR AdapterWWN[8];
  1507. #define MSFC_LinkEvent_AdapterWWN_SIZE sizeof(UCHAR[8])
  1508. #define MSFC_LinkEvent_AdapterWWN_ID 2
  1509. // Size of RLIR buffer
  1510. ULONG RLIRBufferSize;
  1511. #define MSFC_LinkEvent_RLIRBufferSize_SIZE sizeof(ULONG)
  1512. #define MSFC_LinkEvent_RLIRBufferSize_ID 3
  1513. // Size of RLIR buffer
  1514. UCHAR RLIRBuffer[1];
  1515. #define MSFC_LinkEvent_RLIRBuffer_ID 4
  1516. } MSFC_LinkEvent, *PMSFC_LinkEvent;
  1517. // MSFC_EventControl - MSFC_EventControl
  1518. // This class defines the port statistics thresholds that will cause a HBA_EVENT_PORT_STAT_THRESHOLD event to occur
  1519. #define MSFC_EventControlGuid \
  1520. { 0xa251ccb3,0x5ab0,0x411b, { 0x87,0x71,0x54,0x30,0xef,0x53,0xa2,0x6c } }
  1521. #if ! (defined(MIDL_PASS))
  1522. DEFINE_GUID(MSFC_EventControl_GUID, \
  1523. 0xa251ccb3,0x5ab0,0x411b,0x87,0x71,0x54,0x30,0xef,0x53,0xa2,0x6c);
  1524. #endif
  1525. //
  1526. // Method id definitions for MSFC_EventControl
  1527. #define AddTarget 10
  1528. typedef struct _AddTarget_IN
  1529. {
  1530. //
  1531. UCHAR HbaPortWWN[8];
  1532. #define AddTarget_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  1533. #define AddTarget_IN_HbaPortWWN_ID 2
  1534. //
  1535. UCHAR DiscoveredPortWWN[8];
  1536. #define AddTarget_IN_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  1537. #define AddTarget_IN_DiscoveredPortWWN_ID 3
  1538. //
  1539. ULONG AllTargets;
  1540. #define AddTarget_IN_AllTargets_SIZE sizeof(ULONG)
  1541. #define AddTarget_IN_AllTargets_ID 4
  1542. } AddTarget_IN, *PAddTarget_IN;
  1543. #define AddTarget_IN_SIZE (FIELD_OFFSET(AddTarget_IN, AllTargets) + AddTarget_IN_AllTargets_SIZE)
  1544. typedef struct _AddTarget_OUT
  1545. {
  1546. // HBA Status result for the query operation
  1547. ULONG HBAStatus;
  1548. #define AddTarget_OUT_HBAStatus_SIZE sizeof(ULONG)
  1549. #define AddTarget_OUT_HBAStatus_ID 1
  1550. } AddTarget_OUT, *PAddTarget_OUT;
  1551. #define AddTarget_OUT_SIZE (FIELD_OFFSET(AddTarget_OUT, HBAStatus) + AddTarget_OUT_HBAStatus_SIZE)
  1552. #define RemoveTarget 11
  1553. typedef struct _RemoveTarget_IN
  1554. {
  1555. //
  1556. UCHAR HbaPortWWN[8];
  1557. #define RemoveTarget_IN_HbaPortWWN_SIZE sizeof(UCHAR[8])
  1558. #define RemoveTarget_IN_HbaPortWWN_ID 2
  1559. //
  1560. UCHAR DiscoveredPortWWN[8];
  1561. #define RemoveTarget_IN_DiscoveredPortWWN_SIZE sizeof(UCHAR[8])
  1562. #define RemoveTarget_IN_DiscoveredPortWWN_ID 3
  1563. //
  1564. ULONG AllTargets;
  1565. #define RemoveTarget_IN_AllTargets_SIZE sizeof(ULONG)
  1566. #define RemoveTarget_IN_AllTargets_ID 4
  1567. } RemoveTarget_IN, *PRemoveTarget_IN;
  1568. #define RemoveTarget_IN_SIZE (FIELD_OFFSET(RemoveTarget_IN, AllTargets) + RemoveTarget_IN_AllTargets_SIZE)
  1569. typedef struct _RemoveTarget_OUT
  1570. {
  1571. // HBA Status result for the query operation
  1572. ULONG HBAStatus;
  1573. #define RemoveTarget_OUT_HBAStatus_SIZE sizeof(ULONG)
  1574. #define RemoveTarget_OUT_HBAStatus_ID 1
  1575. } RemoveTarget_OUT, *PRemoveTarget_OUT;
  1576. #define RemoveTarget_OUT_SIZE (FIELD_OFFSET(RemoveTarget_OUT, HBAStatus) + RemoveTarget_OUT_HBAStatus_SIZE)
  1577. #define AddPort 20
  1578. typedef struct _AddPort_IN
  1579. {
  1580. //
  1581. UCHAR PortWWN[8];
  1582. #define AddPort_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1583. #define AddPort_IN_PortWWN_ID 2
  1584. } AddPort_IN, *PAddPort_IN;
  1585. #define AddPort_IN_SIZE (FIELD_OFFSET(AddPort_IN, PortWWN) + AddPort_IN_PortWWN_SIZE)
  1586. typedef struct _AddPort_OUT
  1587. {
  1588. // HBA Status result for the query operation
  1589. ULONG HBAStatus;
  1590. #define AddPort_OUT_HBAStatus_SIZE sizeof(ULONG)
  1591. #define AddPort_OUT_HBAStatus_ID 1
  1592. } AddPort_OUT, *PAddPort_OUT;
  1593. #define AddPort_OUT_SIZE (FIELD_OFFSET(AddPort_OUT, HBAStatus) + AddPort_OUT_HBAStatus_SIZE)
  1594. #define RemovePort 21
  1595. typedef struct _RemovePort_IN
  1596. {
  1597. //
  1598. UCHAR PortWWN[8];
  1599. #define RemovePort_IN_PortWWN_SIZE sizeof(UCHAR[8])
  1600. #define RemovePort_IN_PortWWN_ID 2
  1601. } RemovePort_IN, *PRemovePort_IN;
  1602. #define RemovePort_IN_SIZE (FIELD_OFFSET(RemovePort_IN, PortWWN) + RemovePort_IN_PortWWN_SIZE)
  1603. typedef struct _RemovePort_OUT
  1604. {
  1605. // HBA Status result for the query operation
  1606. ULONG HBAStatus;
  1607. #define RemovePort_OUT_HBAStatus_SIZE sizeof(ULONG)
  1608. #define RemovePort_OUT_HBAStatus_ID 1
  1609. } RemovePort_OUT, *PRemovePort_OUT;
  1610. #define RemovePort_OUT_SIZE (FIELD_OFFSET(RemovePort_OUT, HBAStatus) + RemovePort_OUT_HBAStatus_SIZE)
  1611. #define AddLink 30
  1612. typedef struct _AddLink_OUT
  1613. {
  1614. // HBA Status result for the query operation
  1615. ULONG HBAStatus;
  1616. #define AddLink_OUT_HBAStatus_SIZE sizeof(ULONG)
  1617. #define AddLink_OUT_HBAStatus_ID 1
  1618. } AddLink_OUT, *PAddLink_OUT;
  1619. #define AddLink_OUT_SIZE (FIELD_OFFSET(AddLink_OUT, HBAStatus) + AddLink_OUT_HBAStatus_SIZE)
  1620. #define RemoveLink 31
  1621. typedef struct _RemoveLink_OUT
  1622. {
  1623. // HBA Status result for the query operation
  1624. ULONG HBAStatus;
  1625. #define RemoveLink_OUT_HBAStatus_SIZE sizeof(ULONG)
  1626. #define RemoveLink_OUT_HBAStatus_ID 1
  1627. } RemoveLink_OUT, *PRemoveLink_OUT;
  1628. #define RemoveLink_OUT_SIZE (FIELD_OFFSET(RemoveLink_OUT, HBAStatus) + RemoveLink_OUT_HBAStatus_SIZE)
  1629. #endif