Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ntddvol.h Source File

ntddvol.h

00001 /*
00002  * ntddvol.h
00003  *
00004  * Volume IOCTL 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 __NTDDVOL_H
00024 #define __NTDDVOL_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 IOCTL_VOLUME_BASE                 ((ULONG) 'V')
00037 
00038 #define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \
00039   CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
00040 
00041 #define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \
00042   CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
00043 
00044 #define IOCTL_VOLUME_READ_PLEX \
00045   CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
00046 
00047 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
00048   CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
00049 
00050 #define IOCTL_VOLUME_IS_CLUSTERED \
00051   CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
00052 
00053 #define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \
00054   CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
00055 
00056 #define IOCTL_VOLUME_IS_PARTITION \
00057   CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
00058 
00059 #define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
00060   CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
00061 
00062 #define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
00063   CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
00064 
00065 #define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \
00066   CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
00067 
00068 #define IOCTL_VOLUME_ONLINE \
00069   CTL_CODE(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00070 
00071 #define IOCTL_VOLUME_OFFLINE \
00072   CTL_CODE(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
00073 
00074 #define IOCTL_VOLUME_IS_OFFLINE \
00075   CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
00076 
00077 #define IOCTL_VOLUME_IS_IO_CAPABLE \
00078   CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
00079 
00080 #define IOCTL_VOLUME_QUERY_FAILOVER_SET \
00081   CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
00082 
00083 
00084 typedef struct _VOLUME_LOGICAL_OFFSET {
00085   LONGLONG  LogicalOffset;
00086 } VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET;
00087 
00088 typedef struct _VOLUME_PHYSICAL_OFFSET {
00089   ULONG  DiskNumber;
00090   LONGLONG  Offset;
00091 } VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET;
00092 
00093 typedef struct _VOLUME_PHYSICAL_OFFSETS {
00094   ULONG  NumberOfPhysicalOffsets;
00095   VOLUME_PHYSICAL_OFFSET  PhysicalOffset[1];
00096 } VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS;
00097 
00098 typedef struct _VOLUME_READ_PLEX_INPUT {
00099   LARGE_INTEGER  ByteOffset;
00100   ULONG  Length;
00101   ULONG  PlexNumber;
00102 } VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT;
00103 
00104 typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
00105   ULONGLONG  GptAttributes;
00106 } VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
00107 
00108 typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
00109     ULONGLONG  GptAttributes;
00110     BOOLEAN  RevertOnClose;
00111     BOOLEAN  ApplyToAllConnectedVolumes;
00112     USHORT  Reserved1;
00113     ULONG  Reserved2;
00114 } VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
00115 
00116 typedef struct _DISK_EXTENT {
00117     ULONG  DiskNumber;
00118     LARGE_INTEGER  StartingOffset;
00119     LARGE_INTEGER  ExtentLength;
00120 } DISK_EXTENT, *PDISK_EXTENT;
00121 
00122 typedef struct _VOLUME_DISK_EXTENTS {
00123     ULONG  NumberOfDiskExtents;
00124     DISK_EXTENT  Extents[1];
00125 } VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
00126 
00127 typedef struct _VOLUME_NUMBER {
00128     ULONG  VolumeNumber;
00129     WCHAR  VolumeManagerName[8];
00130 } VOLUME_NUMBER, *PVOLUME_NUMBER;
00131 
00132 typedef struct _VOLUME_FAILOVER_SET {
00133     ULONG  NumberOfDisks;
00134     ULONG  DiskNumbers[1];
00135 } VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET;
00136 
00137 #ifdef __cplusplus
00138 }
00139 #endif
00140 
00141 #endif /* __NTDDVOL_H */