iscsidsc.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_ISCSIDSC
  7. #define _INC_ISCSIDSC
  8. #include <ntddscsi.h>
  9. #if (_WIN32_WINNT >= 0x0600)
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. typedef enum {
  14. ISCSI_NO_AUTH_TYPE = 0,
  15. ISCSI_CHAP_AUTH_TYPE = 1,
  16. ISCSI_MUTUAL_CHAP_AUTH_TYPE = 2
  17. } ISCSI_AUTH_TYPES;
  18. typedef enum {
  19. ISCSI_DIGEST_TYPE_NONE = 0,
  20. ISCSI_DIGEST_TYPE_CRC32C = 1
  21. } ISCSI_DIGEST_TYPES;
  22. typedef ULONG ISCSI_LOGIN_OPTIONS_INFO_SPECIFIED,
  23. *PISCSI_LOGIN_OPTIONS_INFO_SPECIFIED;
  24. #define ISCSI_LOGIN_OPTIONS_HEADER_DIGEST 0x00000001
  25. #define ISCSI_LOGIN_OPTIONS_DATA_DIGEST 0x00000002
  26. #define ISCSI_LOGIN_OPTIONS_MAXIMUM_CONNECTIONS 0x00000004
  27. #define ISCSI_LOGIN_OPTIONS_DEFAULT_TIME_2_WAIT 0x00000008
  28. #define ISCSI_LOGIN_OPTIONS_DEFAULT_TIME_2_RETAIN 0x00000010
  29. #define ISCSI_LOGIN_OPTIONS_USERNAME 0x00000020
  30. #define ISCSI_LOGIN_OPTIONS_PASSWORD 0x00000040
  31. #define ISCSI_LOGIN_OPTIONS_AUTH_TYPE 0x00000080
  32. #define ISCSI_LOGIN_OPTIONS_VERSION 0x00000000
  33. typedef ULONG ISCSI_LOGIN_FLAGS,
  34. *PISCSI_LOGIN_FLAGS;
  35. #define ISCSI_LOGIN_FLAG_REQUIRE_IPSEC 0x00000001
  36. #define ISCSI_LOGIN_FLAG_MULTIPATH_ENABLED 0x00000002
  37. #define ISCSI_LOGIN_FLAG_RESERVED1 0x00000004
  38. #define ISCSI_LOGIN_FLAG_ALLOW_PORTAL_HOPPING 0x00000008
  39. #define ISCSI_LOGIN_FLAG_USE_RADIUS_RESPONSE 0x00000010
  40. #define ISCSI_LOGIN_FLAG_USE_RADIUS_VERIFICATION 0x00000020
  41. typedef ULONGLONG ISCSI_SECURITY_FLAGS,
  42. *PISCSI_SECURITY_FLAGS;
  43. #define ISCSI_SECURITY_FLAG_VALID 0x00000001
  44. #define ISCSI_SECURITY_FLAG_IKE_IPSEC_ENABLED 0x00000002
  45. #define ISCSI_SECURITY_FLAG_MAIN_MODE_ENABLED 0x00000004
  46. #define ISCSI_SECURITY_FLAG_AGGRESSIVE_MODE_ENABLED 0x00000008
  47. #define ISCSI_SECURITY_FLAG_PFS_ENABLED 0x00000010
  48. #define ISCSI_SECURITY_FLAG_TRANSPORT_MODE_PREFERRED 0x00000020
  49. #define ISCSI_SECURITY_FLAG_TUNNEL_MODE_PREFERRED 0x00000040
  50. #define AddIScsiConnection __MINGW_NAME_AW(AddIScsiConnection)
  51. #define AddIScsiSendTargetPortal __MINGW_NAME_AW(AddIScsiSendTargetPortal)
  52. #define AddIScsiStaticTarget __MINGW_NAME_AW(AddIScsiStaticTarget)
  53. #define RemoveIScsiStaticTarget __MINGW_NAME_AW(RemoveIScsiStaticTarget)
  54. #define AddISNSServer __MINGW_NAME_AW(AddISNSServer)
  55. #define AddPersistentiScsiDevice __MINGW_NAME_AW(AddPersistentiScsiDevice)
  56. #define RemoveIScsiPersistentTarget __MINGW_NAME_AW(RemoveIScsiPersistentTarget)
  57. #define RemovePersistentIScsiDevice __MINGW_NAME_AW(RemovePersistentIScsiDevice)
  58. #define PERSISTENT_ISCSI_LOGIN_INFO __MINGW_NAME_AW(PERSISTENT_ISCSI_LOGIN_INFO)
  59. #define AddRadiusServer __MINGW_NAME_AW(AddRadiusServer)
  60. #define RemoveRadiusServer __MINGW_NAME_AW(RemoveRadiusServer)
  61. #define MAX_ISCSI_PORTAL_NAME_LEN 256
  62. #define MAX_ISCSI_PORTAL_ADDRESS_LEN 256
  63. #define MAX_ISCSI_HBANAME_LEN 256
  64. typedef enum _TARGET_INFORMATION_CLASS {
  65. ProtocolType,
  66. TargetAlias,
  67. DiscoveryMechanisms,
  68. PortalGroups,
  69. PersistentTargetMappings,
  70. InitiatorName,
  71. TargetFlags,
  72. LoginOptions
  73. } TARGET_INFORMATION_CLASS;
  74. typedef enum _TARGETPROTOCOLTYPE {
  75. ISCSI_TCP_PROTOCOL_TYPE
  76. } TARGETPROTOCOLTYPE;
  77. typedef enum _IKE_AUTHENTICATION_METHOD {
  78. IKE_AUTHENTICATION_PRESHARED_KEY_METHOD = 1
  79. } IKE_AUTHENTICATION_METHOD, *PIKE_AUTHENTICATION_METHOD;
  80. typedef struct _ISCSI_LOGIN_OPTIONS {
  81. ULONG Version;
  82. ISCSI_LOGIN_OPTIONS_INFO_SPECIFIED InformationSpecified;
  83. ISCSI_LOGIN_FLAGS LoginFlags;
  84. ISCSI_AUTH_TYPES AuthType;
  85. ISCSI_DIGEST_TYPES HeaderDigest;
  86. ISCSI_DIGEST_TYPES DataDigest;
  87. ULONG MaximumConnections;
  88. ULONG DefaultTime2Wait;
  89. ULONG DefaultTime2Retain;
  90. ULONG UsernameLength;
  91. ULONG PasswordLength;
  92. PUCHAR Username;
  93. PUCHAR Password;
  94. } ISCSI_LOGIN_OPTIONS, *PISCSI_LOGIN_OPTIONS, *PSCSI_LOGIN_OPTIONS, *PISCI_LOGIN_OPTIONS;
  95. typedef struct _ISCSI_TARGET_PORTALA {
  96. CHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  97. CHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  98. USHORT Socket;
  99. } ISCSI_TARGET_PORTALA, *PISCSI_TARGET_PORTALA;
  100. typedef struct _ISCSI_TARGET_PORTALW {
  101. WCHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  102. WCHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  103. USHORT Socket;
  104. } ISCSI_TARGET_PORTALW, *PISCSI_TARGET_PORTALW;
  105. typedef struct _ISCSI_TARGET_PORTAL_GROUPA {
  106. ULONG Count;
  107. ISCSI_TARGET_PORTALA Portals[1];
  108. } ISCSI_TARGET_PORTAL_GROUPA, *PISCSI_TARGET_PORTAL_GROUPA;
  109. typedef struct _ISCSI_TARGET_PORTAL_GROUPW {
  110. ULONG Count;
  111. ISCSI_TARGET_PORTALW Portals[1];
  112. } ISCSI_TARGET_PORTAL_GROUPW, *PISCSI_TARGET_PORTAL_GROUPW;
  113. typedef struct _ISCSI_LUN_LIST {
  114. ULONG OSLUN;
  115. ULONGLONG TargetLUN;
  116. } SCSI_LUN_LIST, *PSCSI_LUN_LIST;
  117. typedef struct _ISCSI_UNIQUE_SESSION_ID {
  118. ULONGLONG AdapterUnique;
  119. ULONGLONG AdapterSpecific;
  120. }
  121. ISCSI_UNIQUE_SESSION_ID, *PISCSI_UNIQUE_SESSION_ID,
  122. ISCSI_UNIQUE_CONNECTION_ID, *PISCSI_UNIQUE_CONNECTION_ID;
  123. typedef struct _ISCSI_TARGET_MAPPINGA {
  124. CHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  125. CHAR TargetName[MAX_ISCSI_NAME_LEN];
  126. CHAR OSDeviceName[MAX_PATH];
  127. ISCSI_UNIQUE_SESSION_ID SessionId;
  128. ULONG OSBusNumber;
  129. ULONG OSTargetNumber;
  130. ULONG LUNCount;
  131. PSCSI_LUN_LIST LUNList;
  132. } ISCSI_TARGET_MAPPINGA, *PISCSI_TARGET_MAPPINGA;
  133. typedef struct _ISCSI_TARGET_MAPPINGW {
  134. WCHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  135. WCHAR TargetName[MAX_ISCSI_NAME_LEN];
  136. WCHAR OSDeviceName[MAX_PATH];
  137. ISCSI_UNIQUE_SESSION_ID SessionId;
  138. ULONG OSBusNumber;
  139. ULONG OSTargetNumber;
  140. ULONG LUNCount;
  141. PSCSI_LUN_LIST LUNList;
  142. } ISCSI_TARGET_MAPPINGW, *PISCSI_TARGET_MAPPINGW;
  143. typedef struct _PERSISTENT_ISCSI_LOGIN_INFOA {
  144. CHAR TargetName[MAX_ISCSI_NAME_LEN];
  145. BOOLEAN IsInformationalSession;
  146. CHAR InitiatorInstance[MAX_ISCSI_HBANAME_LEN];
  147. ULONG InitiatorPortNumber;
  148. ISCSI_TARGET_PORTALA TargetPortal;
  149. ISCSI_SECURITY_FLAGS SecurityFlags;
  150. PISCSI_TARGET_MAPPINGA Mappings;
  151. ISCSI_LOGIN_OPTIONS LoginOptions;
  152. } PERSISTENT_ISCSI_LOGIN_INFOA, *PPERSISTENT_ISCSI_LOGIN_INFOA;
  153. typedef struct _PERSISTENT_ISCSI_LOGIN_INFOW {
  154. CHAR TargetName[MAX_ISCSI_NAME_LEN];
  155. BOOLEAN IsInformationalSession;
  156. CHAR InitiatorInstance[MAX_ISCSI_HBANAME_LEN];
  157. ULONG InitiatorPortNumber;
  158. ISCSI_TARGET_PORTALW TargetPortal;
  159. ISCSI_SECURITY_FLAGS SecurityFlags;
  160. PISCSI_TARGET_MAPPINGW Mappings;
  161. ISCSI_LOGIN_OPTIONS LoginOptions;
  162. } PERSISTENT_ISCSI_LOGIN_INFOW, *PPERSISTENT_ISCSI_LOGIN_INFOW;
  163. typedef UCHAR IKE_IDENTIFICATION_PAYLOAD_TYPE, *PIKE_IDENTIFICATION_PAYLOAD_TYPE;
  164. typedef struct _IKE_AUTHENTICATION_PRESHARED_KEY {
  165. ISCSI_SECURITY_FLAGS SecurityFlags;
  166. IKE_IDENTIFICATION_PAYLOAD_TYPE IdType;
  167. ULONG IdLengthInBytes;
  168. PUCHAR Id;
  169. ULONG KeyLengthInBytes;
  170. PUCHAR Key;
  171. } IKE_AUTHENTICATION_PRESHARED_KEY, *PIKE_AUTHENTICATION_PRESHARED_KEY;
  172. typedef struct _IKE_AUTHENTICATION_INFORMATION {
  173. IKE_AUTHENTICATION_METHOD AuthMethod;
  174. __C89_NAMELESS union {
  175. IKE_AUTHENTICATION_PRESHARED_KEY PsKey;
  176. };
  177. } IKE_AUTHENTICATION_INFORMATION, *PIKE_AUTHENTICATION_INFORMATION;
  178. typedef struct _ISCSI_CONNECTION_INFOA {
  179. ISCSI_UNIQUE_CONNECTION_ID ConnectionId;
  180. CHAR InitiatorAddress;
  181. CHAR TargetAddress;
  182. USHORT InitiatorSocket;
  183. USHORT TargetSocket;
  184. UCHAR CID[2];
  185. } ISCSI_CONNECTION_INFOA, *PISCSI_CONNECTION_INFOA;
  186. typedef struct _ISCSI_CONNECTION_INFO {
  187. ISCSI_UNIQUE_CONNECTION_ID ConnectionId;
  188. TCHAR InitiatorAddress;
  189. TCHAR TargetAddress;
  190. USHORT InitiatorSocket;
  191. USHORT TargetSocket;
  192. UCHAR CID[2];
  193. } ISCSI_CONNECTION_INFOW, *PISCSI_CONNECTION_INFOW;
  194. typedef struct _ISCSI_SESSION_INFOA {
  195. ISCSI_UNIQUE_SESSION_ID SessionId;
  196. CHAR InitiatorName;
  197. CHAR TargetName;
  198. CHAR TargetNodeName;
  199. UCHAR ISID[6];
  200. UCHAR TSID[2];
  201. ULONG ConnectionCount;
  202. PISCSI_CONNECTION_INFOA Connections;
  203. } ISCSI_SESSION_INFOA, *PISCSI_SESSION_INFOA;
  204. typedef struct _ISCSI_SESSION_INFO {
  205. ISCSI_UNIQUE_SESSION_ID SessionId;
  206. WCHAR InitiatorName;
  207. WCHAR TargetName;
  208. WCHAR TargetNodeName;
  209. UCHAR ISID[6];
  210. UCHAR TSID[2];
  211. ULONG ConnectionCount;
  212. PISCSI_CONNECTION_INFOW Connections;
  213. } ISCSI_SESSION_INFOW, *PISCSI_SESSION_INFOW;
  214. typedef struct _ISCSI_VERSION_INFO {
  215. ULONG MajorVersion;
  216. ULONG MinorVersion;
  217. ULONG BuildNumber;
  218. } ISCSI_VERSION_INFO, *PISCSI_VERSION_INFO;
  219. typedef struct _ISCSI_TARGET_PORTAL_INFOA {
  220. CHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  221. ULONG InitiatorPortNumber;
  222. CHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  223. CHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  224. USHORT Socket;
  225. } ISCSI_TARGET_PORTAL_INFOA, *PISCSI_TARGET_PORTAL_INFOA;
  226. typedef struct _ISCSI_TARGET_PORTAL_INFOW {
  227. WCHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  228. ULONG InitiatorPortNumber;
  229. WCHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  230. WCHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  231. USHORT Socket;
  232. } ISCSI_TARGET_PORTAL_INFOW, *PISCSI_TARGET_PORTAL_INFOW;
  233. typedef struct _ISCSI_TARGET_PORTAL_INFO_EXA {
  234. CHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  235. ULONG InitiatorPortNumber;
  236. CHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  237. CHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  238. USHORT Socket;
  239. ISCSI_SECURITY_FLAGS SecurityFlags;
  240. ISCSI_LOGIN_OPTIONS LoginOptions;
  241. } ISCSI_TARGET_PORTAL_INFO_EX, *PISCSI_TARGET_PORTAL_INFO_EX;
  242. typedef struct _ISCSI_TARGET_PORTAL_INFO_EXW {
  243. WCHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  244. ULONG InitiatorPortNumber;
  245. WCHAR SymbolicName[MAX_ISCSI_PORTAL_NAME_LEN];
  246. WCHAR Address[MAX_ISCSI_PORTAL_ADDRESS_LEN];
  247. USHORT Socket;
  248. ISCSI_SECURITY_FLAGS SecurityFlags;
  249. ISCSI_LOGIN_OPTIONS LoginOptions;
  250. } ISCSI_TARGET_PORTAL_INFO_EX, *PISCSI_TARGET_PORTAL_INFO_EX;
  251. __MINGW_TYPEDEF_AW(ISCSI_CONNECTION_INFO)
  252. __MINGW_TYPEDEF_AW(PISCSI_CONNECTION_INFO)
  253. __MINGW_TYPEDEF_AW(ISCSI_SESSION_INFO)
  254. __MINGW_TYPEDEF_AW(PISCSI_SESSION_INFO)
  255. __MINGW_TYPEDEF_AW(ISCSI_TARGET_PORTAL_GROUP)
  256. __MINGW_TYPEDEF_AW(PISCSI_TARGET_PORTAL_GROUP)
  257. __MINGW_TYPEDEF_AW(ISCSI_TARGET_PORTAL)
  258. __MINGW_TYPEDEF_AW(PISCSI_TARGET_PORTAL)
  259. __MINGW_TYPEDEF_AW(ISCSI_TARGET_MAPPING)
  260. __MINGW_TYPEDEF_AW(PISCSI_TARGET_MAPPING)
  261. __MINGW_TYPEDEF_AW(ISCSI_TARGET_PORTAL_INFO)
  262. __MINGW_TYPEDEF_AW(PISCSI_TARGET_PORTAL_INFO)
  263. __MINGW_TYPEDEF_AW(ISCSI_TARGET_PORTAL_INFO_EX)
  264. __MINGW_TYPEDEF_AW(PISCSI_TARGET_PORTAL_INFO_EX)
  265. typedef ULONG ISCSI_TARGET_FLAGS;
  266. HRESULT WINAPI AddIScsiConnectionA(PISCSI_UNIQUE_SESSION_ID UniqueSessionId,PVOID Reserved,ULONG InitiatorPortNumber,PISCSI_TARGET_PORTALA TargetPortal,ISCSI_SECURITY_FLAGS SecurityFlags,PSCSI_LOGIN_OPTIONS LoginOptions,ULONG KeySize,PCHAR Key,PISCSI_UNIQUE_CONNECTION_ID ConnectionId);
  267. HRESULT WINAPI AddIScsiConnectionW(PISCSI_UNIQUE_SESSION_ID UniqueSessionId,PVOID Reserved,ULONG InitiatorPortNumber,PISCSI_TARGET_PORTALW TargetPortal,ISCSI_SECURITY_FLAGS SecurityFlags,PSCSI_LOGIN_OPTIONS LoginOptions,ULONG KeySize,PCHAR Key,PISCSI_UNIQUE_CONNECTION_ID ConnectionId);
  268. HRESULT WINAPI AddIScsiSendTargetPortalA(PCHAR InitiatorName,ULONG InitiatorPortNumber,PISCI_LOGIN_OPTIONS LoginOptions,ISCSI_SECURITY_FLAGS SecurityFlags,PISCSI_TARGET_PORTALA Portal);
  269. HRESULT WINAPI AddIScsiSendTargetPortalW(PWCHAR InitiatorName,ULONG InitiatorPortNumber,PISCI_LOGIN_OPTIONS LoginOptions,ISCSI_SECURITY_FLAGS SecurityFlags,PISCSI_TARGET_PORTALW Portal);
  270. HRESULT WINAPI AddIScsiStaticTargetA(PCHAR TargetName,PCHAR TargetAlias,ISCSI_TARGET_FLAGS TargetFlags,BOOLEAN Persist,PISCSI_TARGET_MAPPINGA Mappings,PISCSI_LOGIN_OPTIONS LoginOptions,PISCSI_TARGET_PORTAL_GROUPA PortalGroup);
  271. HRESULT WINAPI AddIScsiStaticTargetW(PWCHAR TargetName,PWCHAR TargetAlias,ISCSI_TARGET_FLAGS TargetFlags,BOOLEAN Persist,PISCSI_TARGET_MAPPINGW Mappings,PISCSI_LOGIN_OPTIONS LoginOptions,PISCSI_TARGET_PORTAL_GROUPW PortalGroup);
  272. HRESULT WINAPI AddISNSServerA(PCHAR Address);
  273. HRESULT WINAPI AddISNSServerW(PWCHAR Address);
  274. HRESULT WINAPI AddRadiusServerA(PCHAR Address);
  275. HRESULT WINAPI AddRadiusServerW(PWCHAR Address);
  276. HRESULT WINAPI AddPersistentiScsiDeviceA(PCHAR VolumePath);
  277. HRESULT WINAPI AddPersistentiScsiDeviceW(PWCHAR VolumePath);
  278. HRESULT WINAPI ClearPersistentiScsiDevices(void);
  279. HRESULT WINAPI RemoveIScsiPersistentTargetA(PCHAR InitiatorInstance,ULONG InitiatorPortNumber,PCHAR TargetName,PISCSI_TARGET_PORTALA Portal);
  280. HRESULT WINAPI RemoveIScsiPersistentTargetW(PWCHAR InitiatorInstance,ULONG InitiatorPortNumber,PWCHAR TargetName,PISCSI_TARGET_PORTALW Portal);
  281. HRESULT WINAPI RemoveIScsiStaticTargetA(PCHAR TargetName);
  282. HRESULT WINAPI RemoveIScsiStaticTargetW(PWCHAR TargetName);
  283. HRESULT WINAPI RemovePersistentIScsiDeviceA(PCHAR VolumePath);
  284. HRESULT WINAPI RemovePersistentIScsiDeviceW(PWCHAR VolumePath);
  285. HRESULT WINAPI RemoveRadiusServerA(PCHAR Address);
  286. HRESULT WINAPI RemoveRadiusServerW(PWCHAR Address);
  287. HRESULT WINAPI SetupPersistentIScsiDevices(void);
  288. HRESULT WINAPI SendScsiInquiry(PISCSI_UNIQUE_SESSION_ID *UniqueSessionId,ULONGLONG Lun,UCHAR EvpdCmddt,UCHAR PageCode,PUCHAR *ScsiStatus,PULONG *ReponseSize,PUCHAR ReponseBuffer,PULONG *SenseSize,PUCHAR SenseBuffer);
  289. HRESULT WINAPI SendScsiReadCapacity(PISCSI_UNIQUE_SESSION_ID UniqueSessionId,ULONGLONG Lun,PUCHAR *ScsiStatus,PULONG *ResponseSize,PUCHAR ResponseBuffer,PULONG *SenseSize,PUCHAR SenseBuffer);
  290. HRESULT WINAPI SendScsiReportLuns(PISCSI_UNIQUE_SESSION_ID UniqueSessionId,PUCHAR *ScsiStatus,PULONG *ResponseSize,PUCHAR ResponseBuffer,PULONG *SenseSize,PUCHAR SenseBuffer);
  291. typedef struct _ISCSI_DEVICE_ON_SESSION {
  292. TCHAR InitiatorName[MAX_ISCSI_HBANAME_LEN];
  293. TCHAR TargetName[MAX_ISCSI_NAME_LEN + 1];
  294. SCSI_ADDRESS ScsiAddress;
  295. GUID DeviceInterfaceType;
  296. TCHAR DeviceInterfaceName[MAX_PATH];
  297. TCHAR LegacyName[MAX_PATH];
  298. STORAGE_DEVICE_NUMBER StorageDeviceNumber;
  299. DWORD DeviceInstance;
  300. } ISCSI_DEVICE_ON_SESSION, *PISCSI_DEVICE_ON_SESSION;
  301. HRESULT WINAPI GetDevicesForiSCSISession(
  302. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  303. ULONG *DeviceCount,
  304. PISCSI_DEVICE_ON_SESSION Devices
  305. );
  306. #define GetIScsiIKEInfo __MINGW_NAME_AW(GetIScsiIKEInfo)
  307. HRESULT WINAPI GetIScsiIKEInfoA(
  308. PCHAR InitiatorName,
  309. ULONG PortNumber,
  310. PULONG Reserved,
  311. PIKE_AUTHENTICATION_INFORMATION *AuthInfo
  312. );
  313. HRESULT WINAPI GetIScsiIKEInfoW(
  314. PWCHAR InitiatorName,
  315. ULONG PortNumber,
  316. PULONG Reserved,
  317. PIKE_AUTHENTICATION_INFORMATION *AuthInfo
  318. );
  319. #define GetIScsiInitiatorNodeName __MINGW_NAME_AW(GetIScsiInitiatorNodeName)
  320. HRESULT WINAPI GetIScsiInitiatorNodeNameA(
  321. PCHAR InitiatorNodeName
  322. );
  323. HRESULT WINAPI GetIScsiInitiatorNodeNameW(
  324. PWCHAR InitiatorNodeName
  325. );
  326. #define GetIScsiSessionList __MINGW_NAME_AW(GetIScsiSessionList)
  327. HRESULT WINAPI GetIScsiSessionListA(
  328. ULONG *BufferSize,
  329. ULONG *SessionCount,
  330. PISCSI_SESSION_INFOA SessionInfo
  331. );
  332. HRESULT WINAPI GetIScsiSessionListW(
  333. ULONG *BufferSize,
  334. ULONG *SessionCount,
  335. PISCSI_SESSION_INFOW SessionInfo
  336. );
  337. #define GetIScsiTargetInformation __MINGW_NAME_AW(GetIScsiTargetInformation)
  338. HRESULT WINAPI GetIScsiTargetInformationA(
  339. PCHAR TargetName,
  340. PCHAR DiscoveryMechanism,
  341. TARGET_INFORMATION_CLASS InfoClass,
  342. PULONG BufferSize,
  343. PVOID Buffer
  344. );
  345. HRESULT WINAPI GetIScsiTargetInformationW(
  346. PWCHAR TargetName,
  347. PWCHAR DiscoveryMechanism,
  348. TARGET_INFORMATION_CLASS InfoClass,
  349. PULONG BufferSize,
  350. PVOID Buffer
  351. );
  352. HRESULT WINAPI GetIScsiVersionInformation(
  353. PISCSI_VERSION_INFO VersionInfo
  354. );
  355. HRESULT WINAPI LoginIScsiTargetA(
  356. PCHAR TargetName,
  357. BOOLEAN IsInformationalSession,
  358. PCHAR InitiatorName,
  359. ULONG InitiatorPortNumber,
  360. PISCSI_TARGET_PORTALA TargetPortal,
  361. ISCSI_SECURITY_FLAGS SecurityFlags,
  362. PISCSI_TARGET_MAPPINGA Mappings,
  363. PISCSI_LOGIN_OPTIONS LoginOptions,
  364. ULONG KeySize,
  365. PCHAR Key,
  366. BOOLEAN IsPersistent,
  367. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  368. PISCSI_UNIQUE_CONNECTION_ID UniqueConnectionId
  369. );
  370. HRESULT WINAPI LoginIScsiTargetW(
  371. PWCHAR TargetName,
  372. BOOLEAN IsInformationalSession,
  373. PWCHAR InitiatorName,
  374. ULONG InitiatorPortNumber,
  375. PISCSI_TARGET_PORTALW TargetPortal,
  376. ISCSI_SECURITY_FLAGS SecurityFlags,
  377. PISCSI_TARGET_MAPPINGW Mappings,
  378. PISCSI_LOGIN_OPTIONS LoginOptions,
  379. ULONG KeySize,
  380. PCHAR Key,
  381. BOOLEAN IsPersistent,
  382. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  383. PISCSI_UNIQUE_CONNECTION_ID UniqueConnectionId
  384. );
  385. HRESULT WINAPI LogoutIScsiTarget(
  386. PISCSI_UNIQUE_SESSION_ID UniqueSessionId
  387. );
  388. HRESULT WINAPI RefreshIScsiSendTargetPortalA(
  389. PCHAR InitiatorInstance,
  390. ULONG InitiatorPortNumber,
  391. PISCSI_TARGET_PORTALA Portal
  392. );
  393. HRESULT WINAPI RefreshIScsiSendTargetPortalW(
  394. PWCHAR InitiatorInstance,
  395. ULONG InitiatorPortNumber,
  396. PISCSI_TARGET_PORTALW Portal
  397. );
  398. #define RefreshIScsiSendTargetPortal __MINGW_NAME_AW(RefreshIScsiSendTargetPortal)
  399. HRESULT WINAPI RefreshISNSServerA(
  400. PCHAR Address
  401. );
  402. HRESULT WINAPI RefreshISNSServerW(
  403. PWCHAR Address
  404. );
  405. #define RefreshISNSServer __MINGW_NAME_AW(RefreshISNSServer)
  406. HRESULT WINAPI RemoveIScsiConnection(
  407. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  408. PISCSI_UNIQUE_CONNECTION_ID UniqueConnectionId
  409. );
  410. HRESULT WINAPI RemoveIScsiPersistentTargetA(
  411. PCHAR InitiatorInstance,
  412. ULONG InitiatorPortNumber,
  413. PCHAR TargetName,
  414. PISCSI_TARGET_PORTALA Portal
  415. );
  416. HRESULT WINAPI RemoveIScsiPersistentTargetW(
  417. PWCHAR InitiatorInstance,
  418. ULONG InitiatorPortNumber,
  419. PWCHAR TargetName,
  420. PISCSI_TARGET_PORTALW Portal
  421. );
  422. #define RemoveIScsiPersistentTarget __MINGW_NAME_AW(RemoveIScsiPersistentTarget)
  423. HRESULT WINAPI RemoveIScsiSendTargetPortalA(
  424. PCHAR InitiatorInstance,
  425. ULONG InitiatorPortNumber,
  426. PISCSI_TARGET_PORTALA Portal
  427. );
  428. HRESULT WINAPI RemoveIScsiSendTargetPortalW(
  429. PWCHAR InitiatorInstance,
  430. ULONG InitiatorPortNumber,
  431. PISCSI_TARGET_PORTALW Portal
  432. );
  433. #define RemoveIScsiSendTargetPortal __MINGW_NAME_AW(RemoveIScsiSendTargetPortal)
  434. HRESULT WINAPI RemoveIScsiStaticTargetA(
  435. PCHAR TargetName
  436. );
  437. HRESULT WINAPI RemoveIScsiStaticTargetW(
  438. PWCHAR TargetName
  439. );
  440. #define RemoveIScsiStaticTarget __MINGW_NAME_AW(RemoveIScsiStaticTarget)
  441. HRESULT WINAPI RemoveISNSServerA(
  442. PCHAR Address
  443. );
  444. HRESULT WINAPI RemoveISNSServerW(
  445. PWCHAR Address
  446. );
  447. #define RemoveISNSServer __MINGW_NAME_AW(RemoveISNSServer)
  448. HRESULT WINAPI RemovePersistentIScsiDeviceA(
  449. PCHAR VolumePath
  450. );
  451. HRESULT WINAPI RemovePersistentIScsiDeviceW(
  452. PWCHAR VolumePath
  453. );
  454. #define RemovePersistentIScsiDevice __MINGW_NAME_AW(RemovePersistentIScsiDevice)
  455. HRESULT WINAPI RemoveRadiusServerA(
  456. PCHAR Address
  457. );
  458. HRESULT WINAPI RemoveRadiusServerW(
  459. PWCHAR Address
  460. );
  461. #define RemoveRadiusServer __MINGW_NAME_AW(RemoveRadiusServer)
  462. HRESULT WINAPI ReportIScsiInitiatorListA(
  463. ULONG *BufferSize,
  464. PCHAR Buffer
  465. );
  466. HRESULT WINAPI ReportIScsiInitiatorListW(
  467. ULONG *BufferSize,
  468. PWCHAR Buffer
  469. );
  470. HRESULT WINAPI ReportIScsiPersistentLoginsA(
  471. ULONG *Count,
  472. PPERSISTENT_ISCSI_LOGIN_INFOA PersistentLoginInfo,
  473. PULONG BufferSizeInBytes
  474. );
  475. HRESULT WINAPI ReportIScsiPersistentLoginsW(
  476. ULONG *Count,
  477. PPERSISTENT_ISCSI_LOGIN_INFOW PersistentLoginInfo,
  478. PULONG BufferSizeInBytes
  479. );
  480. #define ReportIScsiPersistentLogins __MINGW_NAME_AW(ReportIScsiPersistentLogins)
  481. HRESULT WINAPI ReportIScsiSendTargetPortalsA(
  482. PULONG PortalCount,
  483. PISCSI_TARGET_PORTAL_INFOA PortalInfo
  484. );
  485. HRESULT WINAPI ReportIScsiSendTargetPortalsW(
  486. PULONG PortalCount,
  487. PISCSI_TARGET_PORTAL_INFOA PortalInfo
  488. );
  489. #define ReportIScsiSendTargetPortals __MINGW_NAME_AW(ReportIScsiSendTargetPortals)
  490. HRESULT WINAPI ReportActiveIScsiTargetMappingsA(
  491. PULONG BufferSize,
  492. PULONG MappingCount,
  493. PISCSI_TARGET_MAPPINGA Mappings
  494. );
  495. HRESULT WINAPI ReportActiveIScsiTargetMappingsW(
  496. PULONG BufferSize,
  497. PULONG MappingCount,
  498. PISCSI_TARGET_MAPPINGW Mappings
  499. );
  500. #define ReportActiveIScsiTargetMappings __MINGW_NAME_AW(ReportActiveIScsiTargetMappings)
  501. HRESULT WINAPI ReportIScsiSendTargetPortalsExA(
  502. PULONG PortalCount,
  503. PULONG PortalInfoSize,
  504. PISCSI_TARGET_PORTAL_INFO_EXA PortalInfo
  505. );
  506. HRESULT WINAPI ReportIScsiSendTargetPortalsExW(
  507. PULONG PortalCount,
  508. PULONG PortalInfoSize,
  509. PISCSI_TARGET_PORTAL_INFO_EXW PortalInfo
  510. );
  511. #define ReportIScsiSendTargetPortalsEx __MINGW_NAME_AW(ReportIScsiSendTargetPortalsEx)
  512. HRESULT WINAPI ReportIScsiTargetPortalsA(
  513. PCHAR InitiatorName,
  514. PCHAR TargetName,
  515. PUSHORT TargetPortalTag,
  516. PULONG ElementCount,
  517. PISCSI_TARGET_PORTALA Portals
  518. );
  519. HRESULT WINAPI ReportIScsiTargetPortalsW(
  520. PWCHAR InitiatorName,
  521. PWCHAR TargetName,
  522. PUSHORT TargetPortalTag,
  523. PULONG ElementCount,
  524. PISCSI_TARGET_PORTALW Portals
  525. );
  526. #define ReportIScsiTargetPortals __MINGW_NAME_AW(ReportIScsiTargetPortals)
  527. HRESULT WINAPI ReportIScsiTargetsA(
  528. BOOLEAN ForceUpdate,
  529. PULONG BufferSize,
  530. PCHAR Buffer
  531. );
  532. HRESULT WINAPI ReportIScsiTargetsW(
  533. BOOLEAN ForceUpdate,
  534. PULONG BufferSize,
  535. PWCHAR Buffer
  536. );
  537. #define ReportIScsiTargets __MINGW_NAME_AW(ReportIScsiTargets)
  538. HRESULT WINAPI ReportISNSServerListA(
  539. PULONG BufferSizeInChar,
  540. PCHAR Buffer
  541. );
  542. HRESULT WINAPI ReportISNSServerListW(
  543. PULONG BufferSizeInChar,
  544. PWCHAR Buffer
  545. );
  546. #define ReportISNSServerList __MINGW_NAME_AW(ReportISNSServerList)
  547. HRESULT WINAPI ReportPersistentiScsiDevicesA(
  548. PULONG BufferSizeInChar,
  549. PCHAR Buffer
  550. );
  551. HRESULT WINAPI ReportPersistentiScsiDevicesW(
  552. PULONG BufferSizeInChar,
  553. PWCHAR Buffer
  554. );
  555. #define ReportPersistentiScsiDevices __MINGW_NAME_AW(ReportPersistentiScsiDevices)
  556. HRESULT WINAPI ReportRadiusServerListA(
  557. PULONG BufferSizeInChar,
  558. PCHAR Buffer
  559. );
  560. HRESULT WINAPI ReportRadiusServerListW(
  561. PULONG BufferSizeInChar,
  562. PCHAR Buffer
  563. );
  564. #define ReportRadiusServerList __MINGW_NAME_AW(ReportRadiusServerList)
  565. HRESULT WINAPI SendScsiReadCapacity(
  566. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  567. ULONGLONG Lun,
  568. PUCHAR *ScsiStatus,
  569. PULONG *ResponseSize,
  570. PUCHAR ResponseBuffer,
  571. PULONG *SenseSize,
  572. PUCHAR SenseBuffer
  573. );
  574. HRESULT WINAPI SendScsiReportLuns(
  575. PISCSI_UNIQUE_SESSION_ID UniqueSessionId,
  576. PUCHAR *ScsiStatus,
  577. PULONG *ResponseSize,
  578. PUCHAR ResponseBuffer,
  579. PULONG *SenseSize,
  580. PUCHAR SenseBuffer
  581. );
  582. HRESULT WINAPI SendScsiInquiry(
  583. PISCSI_UNIQUE_SESSION_ID *UniqueSessionId,
  584. ULONGLONG Lun,
  585. UCHAR EvpdCmddt,
  586. UCHAR PageCode,
  587. PUCHAR *ScsiStatus,
  588. PULONG *ReponseSize,
  589. PUCHAR ReponseBuffer,
  590. PULONG *SenseSize,
  591. PUCHAR SenseBuffer
  592. );
  593. HRESULT WINAPI SetIScsiGroupPresharedKey(
  594. ULONG KeyLength,
  595. PUCHAR Key,
  596. BOOLEAN Persist
  597. );
  598. HRESULT WINAPI SetIScsiInitiatorCHAPSharedSecret(
  599. ULONG SharedSecretLength,
  600. PUCHAR SharedSecret
  601. );
  602. HRESULT WINAPI SetIScsiInitiatorNodeNameA(
  603. PCHAR InitiatorNodeName
  604. );
  605. HRESULT WINAPI SetIScsiInitiatorNodeNameW(
  606. PWCHAR InitiatorNodeName
  607. );
  608. #define SetIScsiInitiatorNodeName __MINGW_NAME_AW(SetIScsiInitiatorNodeName)
  609. HRESULT WINAPI SetIscsiInitiatorRADIUSSharedSecret(
  610. ULONG SharedSecretLength,
  611. PUCHAR SharedSecret
  612. );
  613. HRESULT WINAPI SetIScsiTunnelModeOuterAddressA(
  614. PCHAR InitiatorName,
  615. ULONG InitiatorPortNumber,
  616. PCHAR DestinationAddress,
  617. PCHAR OuterModeAddress,
  618. BOOLEAN Persist
  619. );
  620. HRESULT WINAPI SetIScsiTunnelModeOuterAddressW(
  621. PWCHAR InitiatorName,
  622. ULONG InitiatorPortNumber,
  623. PWCHAR DestinationAddress,
  624. PWCHAR OuterModeAddress,
  625. BOOLEAN Persist
  626. );
  627. #define SetIScsiTunnelModeOuterAddress __MINGW_NAME_AW(SetIScsiTunnelModeOuterAddress)
  628. HRESULT WINAPI SetupPersistentIScsiDevices(void);
  629. #ifdef __cplusplus
  630. }
  631. #endif
  632. #endif /*(_WIN32_WINNT >= 0x0600)*/
  633. #endif