comparison fuhtark_test/include/winapi/ntmsapi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _INCL_NTMSAPI_H_
7 #define _INCL_NTMSAPI_H_
8
9 #pragma pack(8)
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 typedef GUID NTMS_GUID;
16 typedef GUID *LPNTMS_GUID;
17
18 #define NTMS_NULLGUID {0,0,0,{0,0,0,0,0,0,0,0}}
19 #define NTMS_IS_NULLGUID(id) ((id.Data1==0)&&(id.Data2==0)&&(id.Data3==0)&& (id.Data4[0]==0)&&(id.Data4[1]==0)&&(id.Data4[2]==0)&& (id.Data4[3]==0)&&(id.Data4[4]==0)&&(id.Data4[5]==0)&& (id.Data4[6]==0)&&(id.Data4[7]==0))
20
21 #ifdef UNICODE
22 #define OpenNtmsSession OpenNtmsSessionW
23 #define GetNtmsDeviceName GetNtmsDeviceNameW
24 #define GetNtmsObjectInformation GetNtmsObjectInformationW
25 #define SetNtmsObjectInformation SetNtmsObjectInformationW
26 #define CreateNtmsMediaPool CreateNtmsMediaPoolW
27 #define GetNtmsMediaPoolName GetNtmsMediaPoolNameW
28 #define GetNtmsObjectAttribute GetNtmsObjectAttributeW
29 #define SetNtmsObjectAttribute SetNtmsObjectAttributeW
30 #define GetNtmsUIOptions GetNtmsUIOptionsW
31 #define SetNtmsUIOptions SetNtmsUIOptionsW
32 #define SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestW
33 #define CreateNtmsMedia CreateNtmsMediaW
34 #define EjectDiskFromSADrive EjectDiskFromSADriveW
35 #define GetVolumesFromDrive GetVolumesFromDriveW
36 #else
37 #define OpenNtmsSession OpenNtmsSessionA
38 #define GetNtmsDeviceName GetNtmsDeviceNameA
39 #define GetNtmsObjectInformation GetNtmsObjectInformationA
40 #define SetNtmsObjectInformation SetNtmsObjectInformationA
41 #define CreateNtmsMediaPool CreateNtmsMediaPoolA
42 #define GetNtmsMediaPoolName GetNtmsMediaPoolNameA
43 #define GetNtmsObjectAttribute GetNtmsObjectAttributeA
44 #define SetNtmsObjectAttribute SetNtmsObjectAttributeA
45 #define GetNtmsUIOptions GetNtmsUIOptionsA
46 #define SetNtmsUIOptions SetNtmsUIOptionsA
47 #define SubmitNtmsOperatorRequest SubmitNtmsOperatorRequestA
48 #define CreateNtmsMedia CreateNtmsMediaA
49 #define EjectDiskFromSADrive EjectDiskFromSADriveA
50 #define GetVolumesFromDrive GetVolumesFromDriveA
51 #endif
52
53 #ifndef NTMS_NOREDEF
54
55 enum NtmsObjectsTypes {
56 NTMS_UNKNOWN = 0,NTMS_OBJECT,NTMS_CHANGER,NTMS_CHANGER_TYPE,NTMS_COMPUTER,NTMS_DRIVE,NTMS_DRIVE_TYPE,NTMS_IEDOOR,NTMS_IEPORT,NTMS_LIBRARY,
57 NTMS_LIBREQUEST,NTMS_LOGICAL_MEDIA,NTMS_MEDIA_POOL,NTMS_MEDIA_TYPE,NTMS_PARTITION,NTMS_PHYSICAL_MEDIA,NTMS_STORAGESLOT,NTMS_OPREQUEST,
58 NTMS_UI_DESTINATION,NTMS_NUMBER_OF_OBJECT_TYPES
59 };
60
61 typedef struct _NTMS_ASYNC_IO {
62 NTMS_GUID OperationId;
63 NTMS_GUID EventId;
64 DWORD dwOperationType;
65 DWORD dwResult;
66 DWORD dwAsyncState;
67 HANDLE hEvent;
68 WINBOOL bOnStateChange;
69 } NTMS_ASYNC_IO,*LPNTMS_ASYNC_IO;
70
71 enum NtmsAsyncStatus {
72 NTMS_ASYNCSTATE_QUEUED = 0,NTMS_ASYNCSTATE_WAIT_RESOURCE,NTMS_ASYNCSTATE_WAIT_OPERATOR,NTMS_ASYNCSTATE_INPROCESS,NTMS_ASYNCSTATE_COMPLETE
73 };
74
75 enum NtmsAsyncOperations {
76 NTMS_ASYNCOP_MOUNT = 1
77 };
78 #endif
79
80 enum NtmsSessionOptions {
81 NTMS_SESSION_QUERYEXPEDITE = 0x1
82 };
83
84 HANDLE WINAPI OpenNtmsSessionW(LPCWSTR lpServer,LPCWSTR lpApplication,DWORD dwOptions);
85 HANDLE WINAPI OpenNtmsSessionA(LPCSTR lpServer,LPCSTR lpApplication,DWORD dwOptions);
86 DWORD WINAPI CloseNtmsSession(HANDLE hSession);
87
88 #ifndef NTMS_NOREDEF
89
90 enum NtmsMountOptions {
91 NTMS_MOUNT_READ = 0x0001,NTMS_MOUNT_WRITE = 0x0002,NTMS_MOUNT_ERROR_NOT_AVAILABLE = 0x0004,NTMS_MOUNT_ERROR_IF_UNAVAILABLE = 0x0004,
92 NTMS_MOUNT_ERROR_OFFLINE = 0x0008,NTMS_MOUNT_ERROR_IF_OFFLINE = 0x0008,NTMS_MOUNT_SPECIFIC_DRIVE = 0x0010,NTMS_MOUNT_NOWAIT = 0x0020
93 };
94
95 enum NtmsDismountOptions {
96 NTMS_DISMOUNT_DEFERRED = 0x0001,NTMS_DISMOUNT_IMMEDIATE = 0x0002
97 };
98
99 enum NtmsMountPriority {
100 NTMS_PRIORITY_DEFAULT = 0,NTMS_PRIORITY_HIGHEST = 15,NTMS_PRIORITY_HIGH = 7,NTMS_PRIORITY_NORMAL = 0,NTMS_PRIORITY_LOW = -7,
101 NTMS_PRIORITY_LOWEST = -15
102 };
103
104 typedef struct _NTMS_MOUNT_INFORMATION {
105 DWORD dwSize;
106 LPVOID lpReserved;
107 } NTMS_MOUNT_INFORMATION,*LPNTMS_MOUNT_INFORMATION;
108 #endif
109
110 DWORD WINAPI MountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpDriveId,DWORD dwCount,DWORD dwOptions,int dwPriority,DWORD dwTimeout,LPNTMS_MOUNT_INFORMATION lpMountInformation);
111 DWORD WINAPI DismountNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwCount,DWORD dwOptions);
112
113 #ifndef NTMS_NOREDEF
114 enum NtmsAllocateOptions {
115 NTMS_ALLOCATE_NEW = 0x0001,NTMS_ALLOCATE_NEXT = 0x0002,NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE = 0x0004
116 };
117
118 typedef struct _NTMS_ALLOCATION_INFORMATION {
119 DWORD dwSize;
120 LPVOID lpReserved;
121 NTMS_GUID AllocatedFrom;
122 } NTMS_ALLOCATION_INFORMATION,*LPNTMS_ALLOCATION_INFORMATION;
123 #endif
124
125 DWORD WINAPI AllocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaPool,LPNTMS_GUID lpPartition,LPNTMS_GUID lpMediaId,DWORD dwOptions,DWORD dwTimeout,LPNTMS_ALLOCATION_INFORMATION lpAllocateInformation);
126 DWORD WINAPI DeallocateNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD dwOptions);
127 DWORD WINAPI SwapNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId1,LPNTMS_GUID lpMediaId2);
128 DWORD WINAPI AddNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId);
129 DWORD WINAPI DeleteNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaTypeId,LPNTMS_GUID lpLibId);
130 DWORD WINAPI ChangeNtmsMediaType(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId);
131 DWORD WINAPI DecommissionNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId);
132 DWORD WINAPI SetNtmsMediaComplete(HANDLE hSession,LPNTMS_GUID lpMediaId);
133 DWORD WINAPI DeleteNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId);
134
135 #ifndef NTMS_NOREDEF
136 enum NtmsCreateOptions {
137 NTMS_OPEN_EXISTING = 0x0001,NTMS_CREATE_NEW = 0x0002,NTMS_OPEN_ALWAYS = 0x0003
138 };
139 #endif
140
141 #ifdef PRE_SEVIL
142 DWORD WINAPI CreateNtmsMediaPool(HANDLE hSession,LPCTSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
143 #endif
144 DWORD WINAPI CreateNtmsMediaPoolA(HANDLE hSession,LPCSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
145 DWORD WINAPI CreateNtmsMediaPoolW(HANDLE hSession,LPCWSTR lpPoolName,LPNTMS_GUID lpMediaType,DWORD dwAction,LPSECURITY_ATTRIBUTES lpSecurityAttributes,LPNTMS_GUID lpPoolId);
146 DWORD WINAPI GetNtmsMediaPoolNameA(HANDLE hSession,LPNTMS_GUID lpPoolId,LPSTR lpNameBuf,LPDWORD lpdwBufSize);
147 DWORD WINAPI GetNtmsMediaPoolNameW(HANDLE hSession,LPNTMS_GUID lpPoolId,LPWSTR lpNameBuf,LPDWORD lpdwBufSize);
148 DWORD WINAPI MoveToNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpPoolId);
149 DWORD WINAPI DeleteNtmsMediaPool(HANDLE hSession,LPNTMS_GUID lpPoolId);
150 DWORD WINAPI DeleteNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId);
151 DWORD WINAPI DeleteNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
152
153 #define NTMS_OBJECTNAME_LENGTH 64
154 #define NTMS_DESCRIPTION_LENGTH 127
155 #define NTMS_DEVICENAME_LENGTH 64
156 #define NTMS_SERIALNUMBER_LENGTH 32
157 #define NTMS_REVISION_LENGTH 32
158 #define NTMS_BARCODE_LENGTH 64
159 #define NTMS_SEQUENCE_LENGTH 32
160 #define NTMS_VENDORNAME_LENGTH 128
161 #define NTMS_PRODUCTNAME_LENGTH 128
162 #define NTMS_USERNAME_LENGTH 64
163 #define NTMS_APPLICATIONNAME_LENGTH 64
164 #define NTMS_COMPUTERNAME_LENGTH 64
165 #define NTMS_I1_MESSAGE_LENGTH 127
166 #define NTMS_MESSAGE_LENGTH 256
167 #define NTMS_POOLHIERARCHY_LENGTH 512
168 #define NTMS_OMIDLABELID_LENGTH 255
169 #define NTMS_OMIDLABELTYPE_LENGTH 64
170 #define NTMS_OMIDLABELINFO_LENGTH 256
171
172 #ifndef NTMS_NOREDEF
173
174 enum NtmsDriveState {
175 NTMS_DRIVESTATE_DISMOUNTED = 0,NTMS_DRIVESTATE_MOUNTED = 1,NTMS_DRIVESTATE_LOADED = 2,NTMS_DRIVESTATE_UNLOADED = 5,
176 NTMS_DRIVESTATE_BEING_CLEANED = 6,NTMS_DRIVESTATE_DISMOUNTABLE = 7
177 };
178
179 #ifdef UNICODE
180 #define _NTMS_DRIVEINFORMATION _NTMS_DRIVEINFORMATIONW
181 #define NTMS_DRIVEINFORMATION NTMS_DRIVEINFORMATIONW
182 #else
183 #define _NTMS_DRIVEINFORMATION _NTMS_DRIVEINFORMATIONA
184 #define NTMS_DRIVEINFORMATION NTMS_DRIVEINFORMATIONA
185 #endif
186
187 typedef struct _NTMS_DRIVEINFORMATIONA {
188 DWORD Number;
189 DWORD State;
190 NTMS_GUID DriveType;
191 CHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
192 CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
193 CHAR szRevision[NTMS_REVISION_LENGTH];
194 WORD ScsiPort;
195 WORD ScsiBus;
196 WORD ScsiTarget;
197 WORD ScsiLun;
198 DWORD dwMountCount;
199 SYSTEMTIME LastCleanedTs;
200 NTMS_GUID SavedPartitionId;
201 NTMS_GUID Library;
202 GUID Reserved;
203 DWORD dwDeferDismountDelay;
204 } NTMS_DRIVEINFORMATIONA;
205
206 typedef struct _NTMS_DRIVEINFORMATIONW {
207 DWORD Number;
208 DWORD State;
209 NTMS_GUID DriveType;
210 WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
211 WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
212 WCHAR szRevision[NTMS_REVISION_LENGTH];
213 WORD ScsiPort;
214 WORD ScsiBus;
215 WORD ScsiTarget;
216 WORD ScsiLun;
217 DWORD dwMountCount;
218 SYSTEMTIME LastCleanedTs;
219 NTMS_GUID SavedPartitionId;
220 NTMS_GUID Library;
221 GUID Reserved;
222 DWORD dwDeferDismountDelay;
223 } NTMS_DRIVEINFORMATIONW;
224
225 enum NtmsLibraryType {
226 NTMS_LIBRARYTYPE_UNKNOWN = 0,NTMS_LIBRARYTYPE_OFFLINE = 1,NTMS_LIBRARYTYPE_ONLINE = 2,NTMS_LIBRARYTYPE_STANDALONE = 3
227 };
228
229 enum NtmsLibraryFlags {
230 NTMS_LIBRARYFLAG_FIXEDOFFLINE = 0x01,NTMS_LIBRARYFLAG_CLEANERPRESENT = 0x02,NTMS_LIBRARYFLAG_AUTODETECTCHANGE = 0x04,
231 NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING = 0x08,NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE = 0x10
232 };
233
234 enum NtmsInventoryMethod {
235 NTMS_INVENTORY_NONE = 0,NTMS_INVENTORY_FAST = 1,NTMS_INVENTORY_OMID = 2,NTMS_INVENTORY_DEFAULT = 3,NTMS_INVENTORY_SLOT = 4,
236 NTMS_INVENTORY_STOP = 5,NTMS_INVENTORY_MAX
237 };
238
239 typedef struct _NTMS_LIBRARYINFORMATION {
240 DWORD LibraryType;
241 NTMS_GUID CleanerSlot;
242 NTMS_GUID CleanerSlotDefault;
243 WINBOOL LibrarySupportsDriveCleaning;
244 WINBOOL BarCodeReaderInstalled;
245 DWORD InventoryMethod;
246 DWORD dwCleanerUsesRemaining;
247 DWORD FirstDriveNumber;
248 DWORD dwNumberOfDrives;
249 DWORD FirstSlotNumber;
250 DWORD dwNumberOfSlots;
251 DWORD FirstDoorNumber;
252 DWORD dwNumberOfDoors;
253 DWORD FirstPortNumber;
254 DWORD dwNumberOfPorts;
255 DWORD FirstChangerNumber;
256 DWORD dwNumberOfChangers;
257 DWORD dwNumberOfMedia;
258 DWORD dwNumberOfMediaTypes;
259 DWORD dwNumberOfLibRequests;
260 GUID Reserved;
261 WINBOOL AutoRecovery;
262 DWORD dwFlags;
263 } NTMS_LIBRARYINFORMATION;
264
265 #ifdef UNICODE
266 #define _NTMS_CHANGERINFORMATION _NTMS_CHANGERINFORMATIONW
267 #define NTMS_CHANGERINFORMATION NTMS_CHANGERINFORMATIONW
268 #else
269 #define _NTMS_CHANGERINFORMATION _NTMS_CHANGERINFORMATIONA
270 #define NTMS_CHANGERINFORMATION NTMS_CHANGERINFORMATIONA
271 #endif
272
273 typedef struct _NTMS_CHANGERINFORMATIONA {
274 DWORD Number;
275 NTMS_GUID ChangerType;
276 CHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
277 CHAR szRevision[NTMS_REVISION_LENGTH];
278 CHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
279 WORD ScsiPort;
280 WORD ScsiBus;
281 WORD ScsiTarget;
282 WORD ScsiLun;
283 NTMS_GUID Library;
284 } NTMS_CHANGERINFORMATIONA;
285
286 typedef struct _NTMS_CHANGERINFORMATIONW {
287 DWORD Number;
288 NTMS_GUID ChangerType;
289 WCHAR szSerialNumber[NTMS_SERIALNUMBER_LENGTH];
290 WCHAR szRevision[NTMS_REVISION_LENGTH];
291 WCHAR szDeviceName[NTMS_DEVICENAME_LENGTH];
292 WORD ScsiPort;
293 WORD ScsiBus;
294 WORD ScsiTarget;
295 WORD ScsiLun;
296 NTMS_GUID Library;
297 } NTMS_CHANGERINFORMATIONW;
298
299 enum NtmsSlotState {
300 NTMS_SLOTSTATE_UNKNOWN = 0,NTMS_SLOTSTATE_FULL = 1,NTMS_SLOTSTATE_EMPTY = 2,NTMS_SLOTSTATE_NOTPRESENT = 3,NTMS_SLOTSTATE_NEEDSINVENTORY = 4
301 };
302
303 typedef struct _NTMS_STORAGESLOTINFORMATION {
304 DWORD Number;
305 DWORD State;
306 NTMS_GUID Library;
307 } NTMS_STORAGESLOTINFORMATION;
308
309 enum NtmsDoorState {
310 NTMS_DOORSTATE_UNKNOWN = 0,NTMS_DOORSTATE_CLOSED = 1,NTMS_DOORSTATE_OPEN = 2
311 };
312
313 typedef struct _NTMS_IEDOORINFORMATION {
314 DWORD Number;
315 DWORD State;
316 WORD MaxOpenSecs;
317 NTMS_GUID Library;
318 } NTMS_IEDOORINFORMATION;
319
320 enum NtmsPortPosition {
321 NTMS_PORTPOSITION_UNKNOWN = 0,NTMS_PORTPOSITION_EXTENDED = 1,NTMS_PORTPOSITION_RETRACTED = 2
322 };
323
324 enum NtmsPortContent {
325 NTMS_PORTCONTENT_UNKNOWN = 0,NTMS_PORTCONTENT_FULL = 1,NTMS_PORTCONTENT_EMPTY = 2
326 };
327
328 typedef struct _NTMS_IEPORTINFORMATION {
329 DWORD Number;
330 DWORD Content;
331 DWORD Position;
332 WORD MaxExtendSecs;
333 NTMS_GUID Library;
334 } NTMS_IEPORTINFORMATION;
335
336 enum NtmsBarCodeState {
337 NTMS_BARCODESTATE_OK = 1,NTMS_BARCODESTATE_UNREADABLE = 2
338 };
339
340 enum NtmsMediaState {
341 NTMS_MEDIASTATE_IDLE = 0,NTMS_MEDIASTATE_INUSE = 1,NTMS_MEDIASTATE_MOUNTED = 2,NTMS_MEDIASTATE_LOADED = 3,NTMS_MEDIASTATE_UNLOADED = 4,
342 NTMS_MEDIASTATE_OPERROR = 5,NTMS_MEDIASTATE_OPREQ = 6
343 };
344
345 #ifdef UNICODE
346 #define _NTMS_PMIDINFORMATION _NTMS_PMIDINFORMATIONW
347 #define NTMS_PMIDINFORMATION NTMS_PMIDINFORMATIONW
348 #else
349 #define _NTMS_PMIDINFORMATION _NTMS_PMIDINFORMATIONA
350 #define NTMS_PMIDINFORMATION NTMS_PMIDINFORMATIONA
351 #endif
352
353 typedef struct _NTMS_PMIDINFORMATIONA {
354 NTMS_GUID CurrentLibrary;
355 NTMS_GUID MediaPool;
356 NTMS_GUID Location;
357 DWORD LocationType;
358 NTMS_GUID MediaType;
359 NTMS_GUID HomeSlot;
360 CHAR szBarCode[NTMS_BARCODE_LENGTH];
361 DWORD BarCodeState;
362 CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
363 DWORD MediaState;
364 DWORD dwNumberOfPartitions;
365 DWORD dwMediaTypeCode;
366 DWORD dwDensityCode;
367 NTMS_GUID MountedPartition;
368 } NTMS_PMIDINFORMATIONA;
369
370 typedef struct _NTMS_PMIDINFORMATIONW {
371 NTMS_GUID CurrentLibrary;
372 NTMS_GUID MediaPool;
373 NTMS_GUID Location;
374 DWORD LocationType;
375 NTMS_GUID MediaType;
376 NTMS_GUID HomeSlot;
377 WCHAR szBarCode[NTMS_BARCODE_LENGTH];
378 DWORD BarCodeState;
379 WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
380 DWORD MediaState;
381 DWORD dwNumberOfPartitions;
382 DWORD dwMediaTypeCode;
383 DWORD dwDensityCode;
384 NTMS_GUID MountedPartition;
385 } NTMS_PMIDINFORMATIONW;
386
387 typedef struct _NTMS_LMIDINFORMATION {
388 NTMS_GUID MediaPool;
389 DWORD dwNumberOfPartitions;
390 } NTMS_LMIDINFORMATION;
391
392 enum NtmsPartitionState {
393 NTMS_PARTSTATE_UNKNOWN = 0,NTMS_PARTSTATE_UNPREPARED = 1,NTMS_PARTSTATE_INCOMPATIBLE = 2,NTMS_PARTSTATE_DECOMMISSIONED = 3,
394 NTMS_PARTSTATE_AVAILABLE = 4,NTMS_PARTSTATE_ALLOCATED = 5,NTMS_PARTSTATE_COMPLETE = 6,NTMS_PARTSTATE_FOREIGN = 7,NTMS_PARTSTATE_IMPORT = 8,
395 NTMS_PARTSTATE_RESERVED = 9
396 };
397
398 #define NTMS_PARTSTATE_NEW NTMS_PARTSTATE_UNKNOWN
399
400 #ifdef UNICODE
401 #define _NTMS_PARTITIONINFORMATION _NTMS_PARTITIONINFORMATIONW
402 #define NTMS_PARTITIONINFORMATION NTMS_PARTITIONINFORMATIONW
403 #else
404 #define _NTMS_PARTITIONINFORMATION _NTMS_PARTITIONINFORMATIONA
405 #define NTMS_PARTITIONINFORMATION NTMS_PARTITIONINFORMATIONA
406 #endif
407
408 typedef struct _NTMS_PARTITIONINFORMATIONA {
409 NTMS_GUID PhysicalMedia;
410 NTMS_GUID LogicalMedia;
411 DWORD State;
412 WORD Side;
413 DWORD dwOmidLabelIdLength;
414 BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH];
415 CHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH];
416 CHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH];
417 DWORD dwMountCount;
418 DWORD dwAllocateCount;
419 LARGE_INTEGER Capacity;
420 } NTMS_PARTITIONINFORMATIONA;
421
422 typedef struct _NTMS_PARTITIONINFORMATIONW {
423 NTMS_GUID PhysicalMedia;
424 NTMS_GUID LogicalMedia;
425 DWORD State;
426 WORD Side;
427 DWORD dwOmidLabelIdLength;
428 BYTE OmidLabelId[NTMS_OMIDLABELID_LENGTH];
429 WCHAR szOmidLabelType[NTMS_OMIDLABELTYPE_LENGTH];
430 WCHAR szOmidLabelInfo[NTMS_OMIDLABELINFO_LENGTH];
431 DWORD dwMountCount;
432 DWORD dwAllocateCount;
433 LARGE_INTEGER Capacity;
434 } NTMS_PARTITIONINFORMATIONW;
435
436 enum NtmsPoolType {
437 NTMS_POOLTYPE_UNKNOWN = 0,NTMS_POOLTYPE_SCRATCH = 1,NTMS_POOLTYPE_FOREIGN = 2,NTMS_POOLTYPE_IMPORT = 3,NTMS_POOLTYPE_APPLICATION = 1000
438 };
439
440 enum NtmsAllocationPolicy {
441 NTMS_ALLOCATE_FROMSCRATCH = 1
442 };
443
444 enum NtmsDeallocationPolicy {
445 NTMS_DEALLOCATE_TOSCRATCH = 1
446 };
447
448 typedef struct _NTMS_MEDIAPOOLINFORMATION {
449 DWORD PoolType;
450 NTMS_GUID MediaType;
451 NTMS_GUID Parent;
452 DWORD AllocationPolicy;
453 DWORD DeallocationPolicy;
454 DWORD dwMaxAllocates;
455 DWORD dwNumberOfPhysicalMedia;
456 DWORD dwNumberOfLogicalMedia;
457 DWORD dwNumberOfMediaPools;
458 } NTMS_MEDIAPOOLINFORMATION;
459
460 enum NtmsReadWriteCharacteristics {
461 NTMS_MEDIARW_UNKNOWN = 0,NTMS_MEDIARW_REWRITABLE = 1,NTMS_MEDIARW_WRITEONCE = 2,NTMS_MEDIARW_READONLY = 3
462 };
463
464 typedef struct _NTMS_MEDIATYPEINFORMATION {
465 DWORD MediaType;
466 DWORD NumberOfSides;
467 DWORD ReadWriteCharacteristics;
468 DWORD DeviceType;
469 } NTMS_MEDIATYPEINFORMATION;
470
471 #ifdef UNICODE
472 #define _NTMS_DRIVETYPEINFORMATION _NTMS_DRIVETYPEINFORMATIONW
473 #define NTMS_DRIVETYPEINFORMATION NTMS_DRIVETYPEINFORMATIONW
474 #else
475 #define _NTMS_DRIVETYPEINFORMATION _NTMS_DRIVETYPEINFORMATIONA
476 #define NTMS_DRIVETYPEINFORMATION NTMS_DRIVETYPEINFORMATIONA
477 #endif
478
479 typedef struct _NTMS_DRIVETYPEINFORMATIONA {
480 CHAR szVendor[NTMS_VENDORNAME_LENGTH];
481 CHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
482 DWORD NumberOfHeads;
483 DWORD DeviceType;
484 } NTMS_DRIVETYPEINFORMATIONA;
485
486 typedef struct _NTMS_DRIVETYPEINFORMATIONW {
487 WCHAR szVendor[NTMS_VENDORNAME_LENGTH];
488 WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
489 DWORD NumberOfHeads;
490 DWORD DeviceType;
491 } NTMS_DRIVETYPEINFORMATIONW;
492
493 #ifdef UNICODE
494 #define _NTMS_CHANGERTYPEINFORMATION _NTMS_CHANGERTYPEINFORMATIONW
495 #define NTMS_CHANGERTYPEINFORMATION NTMS_CHANGERTYPEINFORMATIONW
496 #else
497 #define _NTMS_CHANGERTYPEINFORMATION _NTMS_CHANGERTYPEINFORMATIONA
498 #define NTMS_CHANGERTYPEINFORMATION NTMS_CHANGERTYPEINFORMATIONA
499 #endif
500
501 typedef struct _NTMS_CHANGERTYPEINFORMATIONA {
502 CHAR szVendor[NTMS_VENDORNAME_LENGTH];
503 CHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
504 DWORD DeviceType;
505 } NTMS_CHANGERTYPEINFORMATIONA;
506
507 typedef struct _NTMS_CHANGERTYPEINFORMATIONW {
508 WCHAR szVendor[NTMS_VENDORNAME_LENGTH];
509 WCHAR szProduct[NTMS_PRODUCTNAME_LENGTH];
510 DWORD DeviceType;
511 } NTMS_CHANGERTYPEINFORMATIONW;
512
513 enum NtmsLmOperation {
514 NTMS_LM_REMOVE = 0,NTMS_LM_DISABLECHANGER = 1,NTMS_LM_DISABLELIBRARY = 1,NTMS_LM_ENABLECHANGER = 2,NTMS_LM_ENABLELIBRARY = 2,
515 NTMS_LM_DISABLEDRIVE = 3,NTMS_LM_ENABLEDRIVE = 4,NTMS_LM_DISABLEMEDIA = 5,NTMS_LM_ENABLEMEDIA = 6,NTMS_LM_UPDATEOMID = 7,
516 NTMS_LM_INVENTORY = 8,NTMS_LM_DOORACCESS = 9,NTMS_LM_EJECT = 10,NTMS_LM_EJECTCLEANER = 11,NTMS_LM_INJECT = 12,NTMS_LM_INJECTCLEANER = 13,
517 NTMS_LM_PROCESSOMID = 14,NTMS_LM_CLEANDRIVE = 15,NTMS_LM_DISMOUNT = 16,NTMS_LM_MOUNT = 17,NTMS_LM_WRITESCRATCH = 18,NTMS_LM_CLASSIFY = 19,
518 NTMS_LM_RESERVECLEANER = 20,NTMS_LM_RELEASECLEANER = 21,NTMS_LM_MAXWORKITEM
519 };
520
521 enum NtmsLmState {
522 NTMS_LM_QUEUED = 0,NTMS_LM_INPROCESS = 1,NTMS_LM_PASSED = 2,NTMS_LM_FAILED = 3,NTMS_LM_INVALID = 4,NTMS_LM_WAITING = 5,
523 NTMS_LM_DEFERRED = 6,NTMS_LM_DEFFERED = 6,NTMS_LM_CANCELLED = 7,NTMS_LM_STOPPED = 8
524 };
525
526 #ifdef UNICODE
527 #define _NTMS_LIBREQUESTINFORMATION _NTMS_LIBREQUESTINFORMATIONW
528 #define NTMS_LIBREQUESTINFORMATION NTMS_LIBREQUESTINFORMATIONW
529 #else
530 #define _NTMS_LIBREQUESTINFORMATION _NTMS_LIBREQUESTINFORMATIONA
531 #define NTMS_LIBREQUESTINFORMATION NTMS_LIBREQUESTINFORMATIONA
532 #endif
533
534 typedef struct _NTMS_LIBREQUESTINFORMATIONA {
535 DWORD OperationCode;
536 DWORD OperationOption;
537 DWORD State;
538 NTMS_GUID PartitionId;
539 NTMS_GUID DriveId;
540 NTMS_GUID PhysMediaId;
541 NTMS_GUID Library;
542 NTMS_GUID SlotId;
543 SYSTEMTIME TimeQueued;
544 SYSTEMTIME TimeCompleted;
545 CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
546 CHAR szUser[NTMS_USERNAME_LENGTH];
547 CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
548 DWORD dwErrorCode;
549 NTMS_GUID WorkItemId;
550 DWORD dwPriority;
551 } NTMS_LIBREQUESTINFORMATIONA;
552
553 typedef struct _NTMS_LIBREQUESTINFORMATIONW {
554 DWORD OperationCode;
555 DWORD OperationOption;
556 DWORD State;
557 NTMS_GUID PartitionId;
558 NTMS_GUID DriveId;
559 NTMS_GUID PhysMediaId;
560 NTMS_GUID Library;
561 NTMS_GUID SlotId;
562 SYSTEMTIME TimeQueued;
563 SYSTEMTIME TimeCompleted;
564 WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
565 WCHAR szUser[NTMS_USERNAME_LENGTH];
566 WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
567 DWORD dwErrorCode;
568 NTMS_GUID WorkItemId;
569 DWORD dwPriority;
570 } NTMS_LIBREQUESTINFORMATIONW;
571
572 enum NtmsOpreqCommand {
573 NTMS_OPREQ_UNKNOWN = 0,NTMS_OPREQ_NEWMEDIA = 1,NTMS_OPREQ_CLEANER = 2,NTMS_OPREQ_DEVICESERVICE = 3,NTMS_OPREQ_MOVEMEDIA = 4,
574 NTMS_OPREQ_MESSAGE = 5
575 };
576
577 enum NtmsOpreqState {
578 NTMS_OPSTATE_UNKNOWN = 0,NTMS_OPSTATE_SUBMITTED = 1,NTMS_OPSTATE_ACTIVE = 2,NTMS_OPSTATE_INPROGRESS = 3,NTMS_OPSTATE_REFUSED = 4,
579 NTMS_OPSTATE_COMPLETE = 5
580 };
581
582 #ifdef UNICODE
583 #define _NTMS_OPREQUESTINFORMATION _NTMS_OPREQUESTINFORMATIONW
584 #define NTMS_OPREQUESTINFORMATION NTMS_OPREQUESTINFORMATIONW
585 #else
586 #define _NTMS_OPREQUESTINFORMATION _NTMS_OPREQUESTINFORMATIONA
587 #define NTMS_OPREQUESTINFORMATION NTMS_OPREQUESTINFORMATIONA
588 #endif
589
590 typedef struct _NTMS_OPREQUESTINFORMATIONA {
591 DWORD Request;
592 SYSTEMTIME Submitted;
593 DWORD State;
594 CHAR szMessage[NTMS_MESSAGE_LENGTH];
595 DWORD Arg1Type;
596 NTMS_GUID Arg1;
597 DWORD Arg2Type;
598 NTMS_GUID Arg2;
599 CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
600 CHAR szUser[NTMS_USERNAME_LENGTH];
601 CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
602 } NTMS_OPREQUESTINFORMATIONA;
603
604 typedef struct _NTMS_OPREQUESTINFORMATIONW {
605 DWORD Request;
606 SYSTEMTIME Submitted;
607 DWORD State;
608 WCHAR szMessage[NTMS_MESSAGE_LENGTH];
609 DWORD Arg1Type;
610 NTMS_GUID Arg1;
611 DWORD Arg2Type;
612 NTMS_GUID Arg2;
613 WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
614 WCHAR szUser[NTMS_USERNAME_LENGTH];
615 WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
616 } NTMS_OPREQUESTINFORMATIONW;
617
618 typedef struct _NTMS_COMPUTERINFORMATION {
619 DWORD dwLibRequestPurgeTime;
620 DWORD dwOpRequestPurgeTime;
621 DWORD dwLibRequestFlags;
622 DWORD dwOpRequestFlags;
623 DWORD dwMediaPoolPolicy;
624 } NTMS_COMPUTERINFORMATION;
625
626 enum NtmsLibRequestFlags {
627 NTMS_LIBREQFLAGS_NOAUTOPURGE = 0x01,NTMS_LIBREQFLAGS_NOFAILEDPURGE = 0x02
628 };
629
630 enum NtmsOpRequestFlags {
631 NTMS_OPREQFLAGS_NOAUTOPURGE = 0x01,NTMS_OPREQFLAGS_NOFAILEDPURGE = 0x02,NTMS_OPREQFLAGS_NOALERTS = 0x10,NTMS_OPREQFLAGS_NOTRAYICON = 0x20
632 };
633
634 enum NtmsMediaPoolPolicy {
635 NTMS_POOLPOLICY_PURGEOFFLINESCRATCH = 0x01,NTMS_POOLPOLICY_KEEPOFFLINEIMPORT = 0x02
636 };
637
638 #ifdef UNICODE
639 #define _NTMS_OBJECTINFORMATION _NTMS_OBJECTINFORMATIONW
640 #define NTMS_OBJECTINFORMATION NTMS_OBJECTINFORMATIONW
641 #define LPNTMS_OBJECTINFORMATION LPNTMS_OBJECTINFORMATIONW
642 #else
643 #define _NTMS_OBJECTINFORMATION _NTMS_OBJECTINFORMATIONA
644 #define NTMS_OBJECTINFORMATION NTMS_OBJECTINFORMATIONA
645 #define LPNTMS_OBJECTINFORMATION LPNTMS_OBJECTINFORMATIONA
646 #endif
647
648 enum NtmsOperationalState {
649 NTMS_READY = 0,NTMS_INITIALIZING = 10,NTMS_NEEDS_SERVICE = 20,NTMS_NOT_PRESENT = 21
650 };
651
652 typedef struct _NTMS_OBJECTINFORMATIONA {
653 DWORD dwSize;
654 DWORD dwType;
655 SYSTEMTIME Created;
656 SYSTEMTIME Modified;
657 NTMS_GUID ObjectGuid;
658 WINBOOL Enabled;
659 DWORD dwOperationalState;
660 CHAR szName[NTMS_OBJECTNAME_LENGTH];
661 CHAR szDescription[NTMS_DESCRIPTION_LENGTH];
662 union {
663 NTMS_DRIVEINFORMATIONA Drive;
664 NTMS_DRIVETYPEINFORMATIONA DriveType;
665 NTMS_LIBRARYINFORMATION Library;
666 NTMS_CHANGERINFORMATIONA Changer;
667 NTMS_CHANGERTYPEINFORMATIONA ChangerType;
668 NTMS_STORAGESLOTINFORMATION StorageSlot;
669 NTMS_IEDOORINFORMATION IEDoor;
670 NTMS_IEPORTINFORMATION IEPort;
671 NTMS_PMIDINFORMATIONA PhysicalMedia;
672 NTMS_LMIDINFORMATION LogicalMedia;
673 NTMS_PARTITIONINFORMATIONA Partition;
674 NTMS_MEDIAPOOLINFORMATION MediaPool;
675 NTMS_MEDIATYPEINFORMATION MediaType;
676 NTMS_LIBREQUESTINFORMATIONA LibRequest;
677 NTMS_OPREQUESTINFORMATIONA OpRequest;
678 NTMS_COMPUTERINFORMATION Computer;
679 } Info;
680 } NTMS_OBJECTINFORMATIONA,*LPNTMS_OBJECTINFORMATIONA;
681
682 typedef struct _NTMS_OBJECTINFORMATIONW {
683 DWORD dwSize;
684 DWORD dwType;
685 SYSTEMTIME Created;
686 SYSTEMTIME Modified;
687 NTMS_GUID ObjectGuid;
688 WINBOOL Enabled;
689 DWORD dwOperationalState;
690 WCHAR szName[NTMS_OBJECTNAME_LENGTH];
691 WCHAR szDescription[NTMS_DESCRIPTION_LENGTH];
692 union {
693 NTMS_DRIVEINFORMATIONW Drive;
694 NTMS_DRIVETYPEINFORMATIONW DriveType;
695 NTMS_LIBRARYINFORMATION Library;
696 NTMS_CHANGERINFORMATIONW Changer;
697 NTMS_CHANGERTYPEINFORMATIONW ChangerType;
698 NTMS_STORAGESLOTINFORMATION StorageSlot;
699 NTMS_IEDOORINFORMATION IEDoor;
700 NTMS_IEPORTINFORMATION IEPort;
701 NTMS_PMIDINFORMATIONW PhysicalMedia;
702 NTMS_LMIDINFORMATION LogicalMedia;
703 NTMS_PARTITIONINFORMATIONW Partition;
704 NTMS_MEDIAPOOLINFORMATION MediaPool;
705 NTMS_MEDIATYPEINFORMATION MediaType;
706 NTMS_LIBREQUESTINFORMATIONW LibRequest;
707 NTMS_OPREQUESTINFORMATIONW OpRequest;
708 NTMS_COMPUTERINFORMATION Computer;
709 } Info;
710 } NTMS_OBJECTINFORMATIONW,*LPNTMS_OBJECTINFORMATIONW;
711
712 #ifdef UNICODE
713 #define NTMS_I1_LIBREQUESTINFORMATION NTMS_I1_LIBREQUESTINFORMATIONW
714 #define NTMS_I1_PARTITIONINFORMATION NTMS_I1_PARTITIONINFORMATIONW
715 #define NTMS_I1_PMIDINFORMATION NTMS_I1_PMIDINFORMATIONW
716 #define NTMS_I1_OPREQUESTINFORMATION NTMS_I1_OPREQUESTINFORMATIONW
717 #define NTMS_I1_OBJECTINFORMATION NTMS_I1_OBJECTINFORMATIONW
718 #else
719 #define NTMS_I1_LIBREQUESTINFORMATION NTMS_I1_LIBREQUESTINFORMATIONA
720 #define NTMS_I1_PARTITIONINFORMATION NTMS_I1_PARTITIONINFORMATIONA
721 #define NTMS_I1_PMIDINFORMATION NTMS_I1_PMIDINFORMATIONA
722 #define NTMS_I1_OPREQUESTINFORMATION NTMS_I1_OPREQUESTINFORMATIONA
723 #define NTMS_I1_OBJECTINFORMATION NTMS_I1_OBJECTINFORMATIONA
724 #endif
725
726 typedef struct _NTMS_I1_LIBRARYINFORMATION {
727 DWORD LibraryType;
728 NTMS_GUID CleanerSlot;
729 NTMS_GUID CleanerSlotDefault;
730 WINBOOL LibrarySupportsDriveCleaning;
731 WINBOOL BarCodeReaderInstalled;
732 DWORD InventoryMethod;
733 DWORD dwCleanerUsesRemaining;
734 DWORD FirstDriveNumber;
735 DWORD dwNumberOfDrives;
736 DWORD FirstSlotNumber;
737 DWORD dwNumberOfSlots;
738 DWORD FirstDoorNumber;
739 DWORD dwNumberOfDoors;
740 DWORD FirstPortNumber;
741 DWORD dwNumberOfPorts;
742 DWORD FirstChangerNumber;
743 DWORD dwNumberOfChangers;
744 DWORD dwNumberOfMedia;
745 DWORD dwNumberOfMediaTypes;
746 DWORD dwNumberOfLibRequests;
747 GUID Reserved;
748 } NTMS_I1_LIBRARYINFORMATION;
749
750 typedef struct _NTMS_I1_LIBREQUESTINFORMATIONA {
751 DWORD OperationCode;
752 DWORD OperationOption;
753 DWORD State;
754 NTMS_GUID PartitionId;
755 NTMS_GUID DriveId;
756 NTMS_GUID PhysMediaId;
757 NTMS_GUID Library;
758 NTMS_GUID SlotId;
759 SYSTEMTIME TimeQueued;
760 SYSTEMTIME TimeCompleted;
761 CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
762 CHAR szUser[NTMS_USERNAME_LENGTH];
763 CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
764 } NTMS_I1_LIBREQUESTINFORMATIONA;
765
766 typedef struct _NTMS_I1_LIBREQUESTINFORMATIONW {
767 DWORD OperationCode;
768 DWORD OperationOption;
769 DWORD State;
770 NTMS_GUID PartitionId;
771 NTMS_GUID DriveId;
772 NTMS_GUID PhysMediaId;
773 NTMS_GUID Library;
774 NTMS_GUID SlotId;
775 SYSTEMTIME TimeQueued;
776 SYSTEMTIME TimeCompleted;
777 WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
778 WCHAR szUser[NTMS_USERNAME_LENGTH];
779 WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
780 } NTMS_I1_LIBREQUESTINFORMATIONW;
781
782 typedef struct _NTMS_I1_PMIDINFORMATIONA {
783 NTMS_GUID CurrentLibrary;
784 NTMS_GUID MediaPool;
785 NTMS_GUID Location;
786 DWORD LocationType;
787 NTMS_GUID MediaType;
788 NTMS_GUID HomeSlot;
789 CHAR szBarCode[NTMS_BARCODE_LENGTH];
790 DWORD BarCodeState;
791 CHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
792 DWORD MediaState;
793 DWORD dwNumberOfPartitions;
794 } NTMS_I1_PMIDINFORMATIONA;
795
796 typedef struct _NTMS_I1_PMIDINFORMATIONW {
797 NTMS_GUID CurrentLibrary;
798 NTMS_GUID MediaPool;
799 NTMS_GUID Location;
800 DWORD LocationType;
801 NTMS_GUID MediaType;
802 NTMS_GUID HomeSlot;
803 WCHAR szBarCode[NTMS_BARCODE_LENGTH];
804 DWORD BarCodeState;
805 WCHAR szSequenceNumber[NTMS_SEQUENCE_LENGTH];
806 DWORD MediaState;
807 DWORD dwNumberOfPartitions;
808 } NTMS_I1_PMIDINFORMATIONW;
809
810 typedef struct _NTMS_I1_PARTITIONINFORMATIONA {
811 NTMS_GUID PhysicalMedia;
812 NTMS_GUID LogicalMedia;
813 DWORD State;
814 WORD Side;
815 DWORD dwOmidLabelIdLength;
816 BYTE OmidLabelId[255];
817 CHAR szOmidLabelType[64];
818 CHAR szOmidLabelInfo[256];
819 DWORD dwMountCount;
820 DWORD dwAllocateCount;
821 } NTMS_I1_PARTITIONINFORMATIONA;
822
823 typedef struct _NTMS_I1_PARTITIONINFORMATIONW {
824 NTMS_GUID PhysicalMedia;
825 NTMS_GUID LogicalMedia;
826 DWORD State;
827 WORD Side;
828 DWORD dwOmidLabelIdLength;
829 BYTE OmidLabelId[255];
830 WCHAR szOmidLabelType[64];
831 WCHAR szOmidLabelInfo[256];
832 DWORD dwMountCount;
833 DWORD dwAllocateCount;
834 } NTMS_I1_PARTITIONINFORMATIONW;
835
836 typedef struct _NTMS_I1_OPREQUESTINFORMATIONA {
837 DWORD Request;
838 SYSTEMTIME Submitted;
839 DWORD State;
840 CHAR szMessage[NTMS_I1_MESSAGE_LENGTH];
841 DWORD Arg1Type;
842 NTMS_GUID Arg1;
843 DWORD Arg2Type;
844 NTMS_GUID Arg2;
845 CHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
846 CHAR szUser[NTMS_USERNAME_LENGTH];
847 CHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
848 } NTMS_I1_OPREQUESTINFORMATIONA;
849
850 typedef struct _NTMS_I1_OPREQUESTINFORMATIONW {
851 DWORD Request;
852 SYSTEMTIME Submitted;
853 DWORD State;
854 WCHAR szMessage[NTMS_I1_MESSAGE_LENGTH];
855 DWORD Arg1Type;
856 NTMS_GUID Arg1;
857 DWORD Arg2Type;
858 NTMS_GUID Arg2;
859 WCHAR szApplication[NTMS_APPLICATIONNAME_LENGTH];
860 WCHAR szUser[NTMS_USERNAME_LENGTH];
861 WCHAR szComputer[NTMS_COMPUTERNAME_LENGTH];
862 } NTMS_I1_OPREQUESTINFORMATIONW;
863
864 typedef struct _NTMS_I1_OBJECTINFORMATIONA {
865 DWORD dwSize;
866 DWORD dwType;
867 SYSTEMTIME Created;
868 SYSTEMTIME Modified;
869 NTMS_GUID ObjectGuid;
870 WINBOOL Enabled;
871 DWORD dwOperationalState;
872 CHAR szName[NTMS_OBJECTNAME_LENGTH];
873 CHAR szDescription[NTMS_DESCRIPTION_LENGTH];
874 union {
875 NTMS_DRIVEINFORMATIONA Drive;
876 NTMS_DRIVETYPEINFORMATIONA DriveType;
877 NTMS_I1_LIBRARYINFORMATION Library;
878 NTMS_CHANGERINFORMATIONA Changer;
879 NTMS_CHANGERTYPEINFORMATIONA ChangerType;
880 NTMS_STORAGESLOTINFORMATION StorageSlot;
881 NTMS_IEDOORINFORMATION IEDoor;
882 NTMS_IEPORTINFORMATION IEPort;
883 NTMS_I1_PMIDINFORMATIONA PhysicalMedia;
884 NTMS_LMIDINFORMATION LogicalMedia;
885 NTMS_I1_PARTITIONINFORMATIONA Partition;
886 NTMS_MEDIAPOOLINFORMATION MediaPool;
887 NTMS_MEDIATYPEINFORMATION MediaType;
888 NTMS_I1_LIBREQUESTINFORMATIONA LibRequest;
889 NTMS_I1_OPREQUESTINFORMATIONA OpRequest;
890 } Info;
891 } NTMS_I1_OBJECTINFORMATIONA,*LPNTMS_I1_OBJECTINFORMATIONA;
892
893 typedef struct _NTMS_I1_OBJECTINFORMATIONW {
894 DWORD dwSize;
895 DWORD dwType;
896 SYSTEMTIME Created;
897 SYSTEMTIME Modified;
898 NTMS_GUID ObjectGuid;
899 WINBOOL Enabled;
900 DWORD dwOperationalState;
901 WCHAR szName[NTMS_OBJECTNAME_LENGTH];
902 WCHAR szDescription[NTMS_DESCRIPTION_LENGTH];
903 union {
904 NTMS_DRIVEINFORMATIONW Drive;
905 NTMS_DRIVETYPEINFORMATIONW DriveType;
906 NTMS_I1_LIBRARYINFORMATION Library;
907 NTMS_CHANGERINFORMATIONW Changer;
908 NTMS_CHANGERTYPEINFORMATIONW ChangerType;
909 NTMS_STORAGESLOTINFORMATION StorageSlot;
910 NTMS_IEDOORINFORMATION IEDoor;
911 NTMS_IEPORTINFORMATION IEPort;
912 NTMS_I1_PMIDINFORMATIONW PhysicalMedia;
913 NTMS_LMIDINFORMATION LogicalMedia;
914 NTMS_I1_PARTITIONINFORMATIONW Partition;
915 NTMS_MEDIAPOOLINFORMATION MediaPool;
916 NTMS_MEDIATYPEINFORMATION MediaType;
917 NTMS_I1_LIBREQUESTINFORMATIONW LibRequest;
918 NTMS_I1_OPREQUESTINFORMATIONW OpRequest;
919 } Info;
920 } NTMS_I1_OBJECTINFORMATIONW,*LPNTMS_I1_OBJECTINFORMATIONW;
921 #endif
922
923 #ifndef NTMS_NOREDEF
924
925 enum NtmsCreateNtmsMediaOptions {
926 NTMS_ERROR_ON_DUPLICATE = 0x0001
927 };
928 #endif
929
930 #ifdef PRE_SEVIL
931 DWORD WINAPI GetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo);
932 DWORD WINAPI SetNtmsObjectInformation(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATION lpInfo);
933 #endif
934 DWORD WINAPI GetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo);
935 DWORD WINAPI GetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo);
936 DWORD WINAPI SetNtmsObjectInformationA(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONA lpInfo);
937 DWORD WINAPI SetNtmsObjectInformationW(HANDLE hSession,LPNTMS_GUID lpObjectId,LPNTMS_OBJECTINFORMATIONW lpInfo);
938 DWORD WINAPI CreateNtmsMediaA(HANDLE hSession,LPNTMS_OBJECTINFORMATIONA lpMedia,LPNTMS_OBJECTINFORMATIONA lpList,DWORD dwOptions);
939 DWORD WINAPI CreateNtmsMediaW(HANDLE hSession,LPNTMS_OBJECTINFORMATIONW lpMedia,LPNTMS_OBJECTINFORMATIONW lpList,DWORD dwOptions);
940 enum NtmsEnumerateOption {
941 NTMS_ENUM_DEFAULT = 0,NTMS_ENUM_ROOTPOOL = 1
942 };
943 DWORD WINAPI EnumerateNtmsObject(HANDLE hSession,const LPNTMS_GUID lpContainerId,LPNTMS_GUID lpList,LPDWORD lpdwListSize,DWORD dwType,DWORD dwOptions);
944 DWORD WINAPI DisableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId);
945 DWORD WINAPI EnableNtmsObject(HANDLE hSession,DWORD dwType,LPNTMS_GUID lpObjectId);
946 enum NtmsEjectOperation {
947 NTMS_EJECT_START = 0,NTMS_EJECT_STOP = 1,NTMS_EJECT_QUEUE = 2,NTMS_EJECT_FORCE = 3,NTMS_EJECT_IMMEDIATE = 4,NTMS_EJECT_ASK_USER = 5
948 };
949 DWORD WINAPI EjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpMediaId,LPNTMS_GUID lpEjectOperation,DWORD dwAction);
950 enum NtmsInjectOperation {
951 NTMS_INJECT_START = 0,NTMS_INJECT_STOP = 1,NTMS_INJECT_RETRACT = 2,NTMS_INJECT_STARTMANY = 3
952 };
953 DWORD WINAPI InjectNtmsMedia(HANDLE hSession,LPNTMS_GUID lpLibraryId,LPNTMS_GUID lpInjectOperation,DWORD dwAction);
954 DWORD WINAPI AccessNtmsLibraryDoor(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction);
955 DWORD WINAPI CleanNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
956 DWORD WINAPI DismountNtmsDrive(HANDLE hSession,LPNTMS_GUID lpDriveId);
957 DWORD WINAPI InventoryNtmsLibrary(HANDLE hSession,LPNTMS_GUID lpLibraryId,DWORD dwAction);
958 DWORD WINAPI IdentifyNtmsSlot(HANDLE hSession,LPNTMS_GUID lpSlotId,DWORD dwOption);
959
960 #define NTMS_OMID_TYPE_RAW_LABEL 0x01
961 #define NTMS_OMID_TYPE_FILESYSTEM_INFO 0x02
962
963 typedef struct {
964 WCHAR FileSystemType[64];
965 WCHAR VolumeName[256];
966 DWORD SerialNumber;
967 } NTMS_FILESYSTEM_INFO;
968
969 DWORD WINAPI UpdateNtmsOmidInfo(HANDLE hSession,LPNTMS_GUID lpMediaId,DWORD labelType,DWORD numberOfBytes,LPVOID lpBuffer);
970 DWORD WINAPI CancelNtmsLibraryRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
971 DWORD WINAPI GetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,LPDWORD lpdwOrderNumber);
972 DWORD WINAPI SetNtmsRequestOrder(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwOrderNumber);
973 DWORD WINAPI DeleteNtmsRequests(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount);
974 DWORD WINAPI ReserveNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpSlot);
975 DWORD WINAPI ReleaseNtmsCleanerSlot (HANDLE hSession,LPNTMS_GUID lpLibrary);
976 DWORD WINAPI InjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpInjectOperation,DWORD dwNumberOfCleansLeft,DWORD dwAction);
977 DWORD WINAPI EjectNtmsCleaner (HANDLE hSession,LPNTMS_GUID lpLibrary,LPNTMS_GUID lpEjectOperation,DWORD dwAction);
978 DWORD WINAPI BeginNtmsDeviceChangeDetection(HANDLE hSession,LPHANDLE lpDetectHandle);
979 DWORD WINAPI SetNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle,LPNTMS_GUID lpRequestId,DWORD dwType,DWORD dwCount);
980 DWORD WINAPI EndNtmsDeviceChangeDetection(HANDLE hSession,HANDLE DetectHandle);
981
982 #ifndef NTMS_NOREDEF
983 enum NtmsDriveType {
984 NTMS_UNKNOWN_DRIVE = 0
985 };
986 #endif
987
988 DWORD WINAPI GetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
989 DWORD WINAPI SetNtmsObjectSecurity(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor);
990 enum NtmsAccessMask {
991 NTMS_USE_ACCESS = 0x1,NTMS_MODIFY_ACCESS = 0x2,NTMS_CONTROL_ACCESS = 0x4
992 };
993
994 #define NTMS_GENERIC_READ NTMS_USE_ACCESS
995 #define NTMS_GENERIC_WRITE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS
996 #define NTMS_GENERIC_EXECUTE NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS
997 #define NTMS_GENERIC_ALL NTMS_USE_ACCESS | NTMS_MODIFY_ACCESS | NTMS_CONTROL_ACCESS
998
999 #define NTMS_MAXATTR_LENGTH 0x10000
1000 #define NTMS_MAXATTR_NAMELEN 32
1001
1002 DWORD WINAPI GetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize);
1003 DWORD WINAPI GetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,LPDWORD lpAttributeSize);
1004 DWORD WINAPI SetNtmsObjectAttributeA(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCSTR lpAttributeName,LPVOID lpAttributeData,DWORD dwAttributeSize);
1005 DWORD WINAPI SetNtmsObjectAttributeW(HANDLE hSession,LPNTMS_GUID lpObjectId,DWORD dwType,LPCWSTR lpAttributeName,LPVOID lpAttributeData,DWORD AttributeSize);
1006
1007 enum NtmsUITypes {
1008 NTMS_UITYPE_INVALID = 0,NTMS_UITYPE_INFO,NTMS_UITYPE_REQ,NTMS_UITYPE_ERR,NTMS_UITYPE_MAX
1009 };
1010
1011 enum NtmsUIOperations {
1012 NTMS_UIDEST_ADD = 1,NTMS_UIDEST_DELETE,NTMS_UIDEST_DELETEALL,NTMS_UIOPERATION_MAX
1013 };
1014
1015 DWORD WINAPI GetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPSTR lpszDestination,LPDWORD lpdwBufSize);
1016 DWORD WINAPI GetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,LPWSTR lpszDestination,LPDWORD lpdwBufSize);
1017 DWORD WINAPI SetNtmsUIOptionsA(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCSTR lpszDestination);
1018 DWORD WINAPI SetNtmsUIOptionsW(HANDLE hSession,const LPNTMS_GUID lpObjectId,DWORD dwType,DWORD dwOperation,LPCWSTR lpszDestination);
1019 DWORD WINAPI SubmitNtmsOperatorRequestW(HANDLE hSession,DWORD dwRequest,LPCWSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId);
1020 DWORD WINAPI SubmitNtmsOperatorRequestA(HANDLE hSession,DWORD dwRequest,LPCSTR lpMessage,LPNTMS_GUID lpArg1Id,LPNTMS_GUID lpArg2Id,LPNTMS_GUID lpRequestId);
1021 DWORD WINAPI WaitForNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId,DWORD dwTimeout);
1022 DWORD WINAPI CancelNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
1023 DWORD WINAPI SatisfyNtmsOperatorRequest(HANDLE hSession,LPNTMS_GUID lpRequestId);
1024
1025 #ifndef NTMS_NOREDEF
1026 enum NtmsNotificationOperations {
1027 NTMS_OBJ_UPDATE = 1,NTMS_OBJ_INSERT = 2,NTMS_OBJ_DELETE = 3,NTMS_EVENT_SIGNAL = 4,NTMS_EVENT_COMPLETE = 5
1028 };
1029
1030 typedef struct _NTMS_NOTIFICATIONINFORMATION {
1031 DWORD dwOperation;
1032 NTMS_GUID ObjectId;
1033 } NTMS_NOTIFICATIONINFORMATION,*LPNTMS_NOTIFICATIONINFORMATION;
1034 #endif
1035
1036 DWORD WINAPI ImportNtmsDatabase(HANDLE hSession);
1037 DWORD WINAPI ExportNtmsDatabase(HANDLE hSession);
1038 DWORD WINAPI ImportNtmsDatabase(HANDLE hSession);
1039 DWORD WINAPI ExportNtmsDatabase(HANDLE hSession);
1040 HANDLE WINAPI OpenNtmsNotification(HANDLE hSession,DWORD dwType);
1041 DWORD WINAPI WaitForNtmsNotification(HANDLE hNotification,LPNTMS_NOTIFICATIONINFORMATION lpNotificationInformation,DWORD dwTimeout);
1042 DWORD WINAPI CloseNtmsNotification(HANDLE hNotification);
1043 DWORD WINAPI EjectDiskFromSADriveW(LPCWSTR lpComputerName,LPCWSTR lpAppName,LPCWSTR lpDeviceName,HWND hWnd,LPCWSTR lpTitle,LPCWSTR lpMessage,DWORD dwOptions);
1044 DWORD WINAPI EjectDiskFromSADriveA(LPCSTR lpComputerName,LPCSTR lpAppName,LPCSTR lpDeviceName,HWND hWnd,LPCSTR lpTitle,LPCSTR lpMessage,DWORD dwOptions);
1045 DWORD WINAPI GetVolumesFromDriveW(LPWSTR pszDriveName,LPWSTR *VolumeNameBufferPtr,LPWSTR *DriveLetterBufferPtr);
1046 DWORD WINAPI GetVolumesFromDriveA(LPSTR pszDriveName,LPSTR *VolumeNameBufferPtr,LPSTR *DriveLetterBufferPtr);
1047
1048 #ifdef __cplusplus
1049 }
1050 #endif
1051
1052 #pragma pack()
1053 #endif