Embed:
(wiki syntax)
Show/hide line numbers
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 */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2