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