OSDN Git Service

Modify "@copy 2012" to read "Copyright 2012, 2013".
[mingw/mingw-org-wsl.git] / include / ddk / ntddvol.h
1 /**
2  * @file ntddvol.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 /* Created by Casper S. Hornstrup <chorns@users.sourceforge.net> */
25 #ifndef __NTDDVOL_H
26 #define __NTDDVOL_H
27 #pragma GCC system_header
28 #include <_mingw.h>
29
30 /*
31  * Volume IOCTL interface.
32  */
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 #include "ntddk.h"
39
40 #define IOCTL_VOLUME_BASE                 ((ULONG) 'V')
41
42 #define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \
43   CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
44
45 #define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \
46   CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
47
48 #define IOCTL_VOLUME_READ_PLEX \
49   CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
50
51 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
52   CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
53
54 #define IOCTL_VOLUME_IS_CLUSTERED \
55   CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
56
57 #define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \
58   CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
59
60 #define IOCTL_VOLUME_IS_PARTITION \
61   CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
62
63 #define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
64   CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
65
66 #define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
67   CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
68
69 #define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \
70   CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
71
72 #define IOCTL_VOLUME_ONLINE \
73   CTL_CODE(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
74
75 #define IOCTL_VOLUME_OFFLINE \
76   CTL_CODE(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
77
78 #define IOCTL_VOLUME_IS_OFFLINE \
79   CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
80
81 #define IOCTL_VOLUME_IS_IO_CAPABLE \
82   CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
83
84 #define IOCTL_VOLUME_QUERY_FAILOVER_SET \
85   CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
86
87
88 typedef struct _VOLUME_LOGICAL_OFFSET {
89   LONGLONG  LogicalOffset;
90 } VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET;
91
92 typedef struct _VOLUME_PHYSICAL_OFFSET {
93   ULONG  DiskNumber;
94   LONGLONG  Offset;
95 } VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET;
96
97 typedef struct _VOLUME_PHYSICAL_OFFSETS {
98   ULONG  NumberOfPhysicalOffsets;
99   VOLUME_PHYSICAL_OFFSET  PhysicalOffset[1];
100 } VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS;
101
102 typedef struct _VOLUME_READ_PLEX_INPUT {
103   LARGE_INTEGER  ByteOffset;
104   ULONG  Length;
105   ULONG  PlexNumber;
106 } VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT;
107
108 typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
109   ULONGLONG  GptAttributes;
110 } VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
111
112 typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
113         ULONGLONG  GptAttributes;
114         BOOLEAN  RevertOnClose;
115         BOOLEAN  ApplyToAllConnectedVolumes;
116         USHORT  Reserved1;
117         ULONG  Reserved2;
118 } VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
119
120 typedef struct _DISK_EXTENT {
121         ULONG  DiskNumber;
122         LARGE_INTEGER  StartingOffset;
123         LARGE_INTEGER  ExtentLength;
124 } DISK_EXTENT, *PDISK_EXTENT;
125
126 typedef struct _VOLUME_DISK_EXTENTS {
127         ULONG  NumberOfDiskExtents;
128         DISK_EXTENT  Extents[1];
129 } VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
130
131 typedef struct _VOLUME_NUMBER {
132         ULONG  VolumeNumber;
133         WCHAR  VolumeManagerName[8];
134 } VOLUME_NUMBER, *PVOLUME_NUMBER;
135
136 typedef struct _VOLUME_FAILOVER_SET {
137         ULONG  NumberOfDisks;
138         ULONG  DiskNumbers[1];
139 } VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET;
140
141 #ifdef __cplusplus
142 }
143 #endif
144
145 #endif /* __NTDDVOL_H */