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