This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/ddk/mountmgr.h

259 lines
9.5 KiB
C

/*
* mountmgr.h Mount point manager definitions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _MOUNTMGR_
#define _MOUNTMGR_
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Mount point manager device names */
#if (NTDDI_VERSION >= 0x05000000)
#define MOUNTMGR_DEVICE_NAME L"\\Device\\MountPointManager"
#define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager"
#endif
/* Mount control types */
#if (NTDDI_VERSION >= 0x05000000)
#define MOUNTMGRCONTROLTYPE 0x0000006DL
#define MOUNTDEVCONTROLTYPE 0x0000004DL
#endif
/* Mount point manager device I/O control types */
#if (NTDDI_VERSION >= 0x05000000)
#define IOCTL_MOUNTMGR_CREATE_POINT \
CTL_CODE( MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_DELETE_POINTS \
CTL_CODE( MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_QUERY_POINTS \
CTL_CODE( MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \
CTL_CODE( MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \
CTL_CODE( MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \
CTL_CODE( MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \
CTL_CODE( MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \
CTL_CODE( MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_CHANGE_NOTIFY \
CTL_CODE( MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS )
#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \
CTL_CODE( MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \
CTL_CODE( MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS )
#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \
CTL_CODE( MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS )
#endif
#if (NTDDI_VERSION >= 0x05010000)
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATH \
CTL_CODE( MOUNTMGRCONTROLTYPE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATHS \
CTL_CODE( MOUNTMGRCONTROLTYPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS )
#endif
#if (NTDDI_VERSION >= 0x05020000)
#define IOCTL_MOUNTMGR_SCRUB_REGISTRY \
CTL_CODE( MOUNTMGRCONTROLTYPE, 14, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_QUERY_AUTO_MOUNT \
CTL_CODE( MOUNTMGRCONTROLTYPE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTMGR_SET_AUTO_MOUNT \
CTL_CODE( MOUNTMGRCONTROLTYPE, 16, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#endif
#if (NTDDI_VERSION >= 0x06010000)
#define IOCTL_MOUNTMGR_BOOT_DL_ASSIGNMENT \
CTL_CODE( MOUNTMGRCONTROLTYPE, 17, METHOD_BUFFERED, FILE_READ_ACCESS | \
FILE_WRITE_ACCESS )
#define IOCTL_MOUNTMGR_TRACELOG_CACHE \
CTL_CODE( MOUNTMGRCONTROLTYPE, 18, METHOD_BUFFERED, FILE_READ_ACCESS )
#endif
/* Mount device I/O control codes */
#if (NTDDI_VERSION >= 0x05000000)
#define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \
CTL_CODE( MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS )
#endif
/* IOCTL_MOUNTMGR_CREATE_POINT parameters */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
USHORT SymbolicLinkNameOffset;
USHORT SymbolicLinkNameLength;
USHORT DeviceNameOffset;
USHORT DeviceNameLength;
} MOUNTMGR_CREATE_POINT_INPUT;
typedef MOUNTMGR_CREATE_POINT_INPUT *PMOUNTMGR_CREATE_POINT_INPUT;
#endif
/* Mount point manager mount point */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_MOUNT_POINT {
ULONG SymbolicLinkNameOffset;
USHORT SymbolicLinkNameLength;
ULONG UniqueIdOffset;
USHORT UniqueIdLength;
ULONG DeviceNameOffset;
USHORT DeviceNameLength;
} MOUNTMGR_MOUNT_POINT;
typedef MOUNTMGR_MOUNT_POINT *PMOUNTMGR_MOUNT_POINT;
#endif
/* Mount point manager mount points */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_MOUNT_POINTS {
ULONG Size;
ULONG NumberOfMountPoints;
MOUNTMGR_MOUNT_POINT MountPoints[1];
} MOUNTMGR_MOUNT_POINTS;
typedef MOUNTMGR_MOUNT_POINTS *PMOUNTMGR_MOUNT_POINTS;
#endif
/* IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER parameters */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
USHORT DeviceNameLength;
WCHAR DeviceName[1];
} MOUNTMGR_DRIVE_LETTER_TARGET;
typedef MOUNTMGR_DRIVE_LETTER_TARGET *PMOUNTMGR_DRIVE_LETTER_TARGET;
#endif
/* Mount point manager drive letter information */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
BOOLEAN DriveLetterWasAssigned;
UCHAR CurrentDriveLetter;
} MOUNTMGR_DRIVE_LETTER_INFORMATION;
typedef MOUNTMGR_DRIVE_LETTER_INFORMATION *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
#endif
/* Mount point manager volume mount point */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
USHORT SourceVolumeNameOffset;
USHORT SourceVolumeNameLength;
USHORT TargetVolumeNameOffset;
USHORT TargetVolumeNameLength;
} MOUNTMGR_VOLUME_MOUNT_POINT;
typedef MOUNTMGR_VOLUME_MOUNT_POINT *PMOUNTMGR_VOLUME_MOUNT_POINT;
#endif
/* Mount point manager change notification information */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
ULONG EpicNumber;
} MOUNTMGR_CHANGE_NOTIFY_INFO;
typedef MOUNTMGR_CHANGE_NOTIFY_INFO *PMOUNTMGR_CHANGE_NOTIFY_INFO;
#endif
/* Mount point manager target name */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTMGR_TARGET_NAME {
USHORT DeviceNameLength;
WCHAR DeviceName[1];
} MOUNTMGR_TARGET_NAME;
typedef MOUNTMGR_TARGET_NAME *PMOUNTMGR_TARGET_NAME;
#endif
/* Mount point manager macros */
#if (NTDDI_VERSION >= 0x05000000)
#define MOUNTMGR_IS_DRIVE_LETTER( x ) \
((x)->Length == 28 && (x)->Buffer[0] == '\\' && (x)->Buffer[1] == 'D' && \
(x)->Buffer[2] == 'o' && (x)->Buffer[3] == 's' && (x)->Buffer[4] == 'D' && \
(x)->Buffer[5] == 'e' && (x)->Buffer[6] == 'v' && (x)->Buffer[7] == 'i' && \
(x)->Buffer[8] == 'c' && (x)->Buffer[9] == 'e' && (x)->Buffer[10] == 's' && \
(x)->Buffer[11] == '\\' && (x)->Buffer[12] >= 'A' && (x)->Buffer[12] <= 'Z' && \
(x)->Buffer[13] == ':')
#define MOUNTMGR_IS_VOLUME_NAME( x ) \
(((x)->Length == 96 || ((x)->Length == 98 && (x)->Buffer[48] == '\\')) && \
(x)->Buffer[0] == '\\' && ((x)->Buffer[1] == '?' || (x)->Buffer[1] == '\\') && \
(x)->Buffer[2] == '?' && (x)->Buffer[3] == '\\' && (x)->Buffer[4] == 'v' && \
(x)->Buffer[5] == 'o' && (x)->Buffer[6] == 'l' && (x)->Buffer[7] == 'u' && \
(x)->Buffer[8] == 'm' && (x)->Buffer[9] == 'e' && (x)->Buffer[10] == '{' && \
(x)->Buffer[19] == '-' && (x)->Buffer[24] == '-' && (x)->Buffer[29] == '-' && \
(x)->Buffer[34] == '-' && (x)->Buffer[47] == '}')
#endif
#if (NTDDI_VERSION >= 0x05010000)
#define MOUNTMGR_IS_DOS_VOLUME_NAME( x ) \
(MOUNTMGR_IS_VOLUME_NAME( x ) && (x)->Length == 96 && (x)->Buffer[1] == '\\')
#define MOUNTMGR_IS_DOS_VOLUME_NAME_WB( x ) \
(MOUNTMGR_IS_VOLUME_NAME( x ) && (x)->Length == 98 && (x)->Buffer[1] == '\\')
#define MOUNTMGR_IS_NT_VOLUME_NAME( x ) \
(MOUNTMGR_IS_VOLUME_NAME( x ) && (x)->Length == 96 && (x)->Buffer[1] == '?')
#define MOUNTMGR_IS_NT_VOLUME_NAME_WB( x ) \
(MOUNTMGR_IS_VOLUME_NAME( x ) && (x)->Length == 98 && (x)->Buffer[1] == '?')
#endif
/* Mount device name */
#if (NTDDI_VERSION >= 0x05000000)
typedef struct _MOUNTDEV_NAME {
USHORT NameLength;
WCHAR Name[1];
} MOUNTDEV_NAME;
typedef MOUNTDEV_NAME *PMOUNTDEV_NAME;
#endif
/* Mount point manager volume paths */
#if (NTDDI_VERSION >= 0x05010000)
typedef struct _MOUNTMGR_VOLUME_PATHS {
ULONG MultiSzLength;
WCHAR MultiSz[1];
} MOUNTMGR_VOLUME_PATHS;
typedef MOUNTMGR_VOLUME_PATHS *PMOUNTMGR_VOLUME_PATHS;
#endif
/* Mount point manager automatic mount states */
#if (NTDDI_VERSION >= 0x05020000)
typedef enum _MOUNTMGR_AUTO_MOUNT_STATE {
Disabled = 0,
Enabled = 1
} MOUNTMGR_AUTO_MOUNT_STATE;
#endif
/* IOCTL_MOUNTMGR_QUERY_AUTO_MOUNT parameters */
#if (NTDDI_VERSION >= 0x05020000)
typedef struct _MOUNTMGR_QUERY_AUTO_MOUNT {
MOUNTMGR_AUTO_MOUNT_STATE CurrentState;
} MOUNTMGR_QUERY_AUTO_MOUNT;
typedef MOUNTMGR_QUERY_AUTO_MOUNT *PMOUNTMGR_QUERY_AUTO_MOUNT;
#endif
/* IOCTL_MOUNTMGR_SET_AUTO_MOUNT parameters */
#if (NTDDI_VERSION >= 0x05020000)
typedef struct _MOUNTMGR_SET_AUTO_MOUNT {
MOUNTMGR_AUTO_MOUNT_STATE NewState;
} MOUNTMGR_SET_AUTO_MOUNT;
typedef MOUNTMGR_SET_AUTO_MOUNT *PMOUNTMGR_SET_AUTO_MOUNT;
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _MOUNTMGR_ */