Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mountmgr.h Source File

mountmgr.h

00001 /*
00002  * mountmgr.h
00003  *
00004  * Mount point manager interface.
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef __MOUNTMGR_H
00024 #define __MOUNTMGR_H
00025 
00026 #if __GNUC__ >=3
00027 #pragma GCC system_header
00028 #endif
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 #include "ntddk.h"
00035 
00036 DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID,
00037     0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
00038 
00039 #define MOUNTMGRCONTROLTYPE                             ((ULONG)'m')
00040 #define MOUNTDEVCONTROLTYPE                             ((ULONG)'M')
00041 
00042 #define MOUNTMGR_DEVICE_NAME              L"\\Device\\MountPointManager"
00043 #define MOUNTMGR_DOS_DEVICE_NAME          L"\\\\.\\MountPointManager"
00044 
00045 #define IOCTL_MOUNTMGR_CREATE_POINT \
00046   CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00047 
00048 #define IOCTL_MOUNTMGR_QUERY_POINTS \
00049   CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
00050 
00051 #define IOCTL_MOUNTMGR_DELETE_POINTS \
00052   CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00053 
00054 #define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \
00055   CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00056 
00057 #define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \
00058   CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00059 
00060 #define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \
00061   CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00062 
00063 #define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \
00064   CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00065 
00066 #define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \
00067   CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00068 
00069 #define IOCTL_MOUNTMGR_CHANGE_NOTIFY \
00070   CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
00071 
00072 #define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \
00073   CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00074 
00075 #define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \
00076   CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
00077 
00078 #define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \
00079   CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
00080 
00081 
00082 typedef struct _MOUNTDEV_NAME {
00083   USHORT  NameLength;
00084   WCHAR  Name[1];
00085 } MOUNTDEV_NAME, *PMOUNTDEV_NAME;
00086 
00087 typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
00088   ULONG  EpicNumber;
00089 } MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
00090 
00091 typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
00092   USHORT  SymbolicLinkNameOffset;
00093   USHORT  SymbolicLinkNameLength;
00094   USHORT  DeviceNameOffset;
00095   USHORT  DeviceNameLength;
00096 } MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
00097 
00098 typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
00099   BOOLEAN  DriveLetterWasAssigned;
00100   UCHAR  CurrentDriveLetter;
00101 } MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
00102 
00103 typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
00104   USHORT  DeviceNameLength;
00105   WCHAR  DeviceName[1];
00106 } MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
00107 
00108 typedef struct _MOUNTMGR_MOUNT_POINT {
00109   ULONG  SymbolicLinkNameOffset;
00110   USHORT  SymbolicLinkNameLength;
00111   ULONG  UniqueIdOffset;
00112   USHORT  UniqueIdLength;
00113   ULONG  DeviceNameOffset;
00114   USHORT  DeviceNameLength;
00115 } MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
00116 
00117 typedef struct _MOUNTMGR_MOUNT_POINTS {
00118   ULONG  Size;
00119   ULONG  NumberOfMountPoints;
00120   MOUNTMGR_MOUNT_POINT  MountPoints[1];
00121 } MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
00122 
00123 typedef struct _MOUNTMGR_TARGET_NAME {
00124   USHORT  DeviceNameLength;
00125   WCHAR  DeviceName[1];
00126 } MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
00127 
00128 typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
00129   USHORT  SourceVolumeNameOffset;
00130   USHORT  SourceVolumeNameLength;
00131   USHORT  TargetVolumeNameOffset;
00132   USHORT  TargetVolumeNameLength;
00133 } MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
00134 
00135 #ifdef __cplusplus
00136 }
00137 #endif
00138 
00139 #endif /* __MOUNTMGR_H */