1 #ifndef _MOUNTDEV_
2 #define _MOUNTDEV_
3 
4 #include <mountmgr.h>
5 
6 #if (NTDDI_VERSION >= NTDDI_WIN2K)
7 
8 #define IOCTL_MOUNTDEV_QUERY_UNIQUE_ID            CTL_CODE(MOUNTDEVCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
9 #define IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME  CTL_CODE(MOUNTDEVCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
10 #define IOCTL_MOUNTDEV_LINK_CREATED               CTL_CODE(MOUNTDEVCONTROLTYPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
11 #define IOCTL_MOUNTDEV_LINK_DELETED               CTL_CODE(MOUNTDEVCONTROLTYPE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
12 
13 typedef struct _MOUNTDEV_UNIQUE_ID {
14   USHORT UniqueIdLength;
15   UCHAR UniqueId[1];
16 } MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID;
17 
18 typedef struct _MOUNTDEV_SUGGESTED_LINK_NAME {
19   BOOLEAN UseOnlyIfThereAreNoOtherLinks;
20   USHORT NameLength;
21   WCHAR Name[1];
22 } MOUNTDEV_SUGGESTED_LINK_NAME, *PMOUNTDEV_SUGGESTED_LINK_NAME;
23 
24 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
25 
26 #if (NTDDI_VERSION >= NTDDI_WINXP)
27 
28 #define IOCTL_MOUNTDEV_QUERY_STABLE_GUID          CTL_CODE(MOUNTDEVCONTROLTYPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
29 
30 typedef struct _MOUNTDEV_STABLE_GUID {
31   GUID StableGuid;
32 } MOUNTDEV_STABLE_GUID, *PMOUNTDEV_STABLE_GUID;
33 
34 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
35 
36 /* FIXME : These definitions don't exist in the official header : */
37 #define IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY    CTL_CODE(MOUNTDEVCONTROLTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
38 typedef struct _MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT {
39   ULONG Size;
40   USHORT OldUniqueIdOffset;
41   USHORT OldUniqueIdLength;
42   USHORT NewUniqueIdOffset;
43   USHORT NewUniqueIdLength;
44 } MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT, *PMOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT;
45 
46 
47 #endif /* _MOUNTDEV_ */
48