Committer:
sca8er
Date:
Mon Mar 05 04:56:58 2012 +0000
Revision:
3:0c3bcea5b4d0
Parent:
2:5853bf44af9f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sca8er 2:5853bf44af9f 1 /*
sca8er 2:5853bf44af9f 2 * ntddvol.h
sca8er 2:5853bf44af9f 3 *
sca8er 2:5853bf44af9f 4 * Volume IOCTL interface.
sca8er 2:5853bf44af9f 5 *
sca8er 2:5853bf44af9f 6 * This file is part of the w32api package.
sca8er 2:5853bf44af9f 7 *
sca8er 2:5853bf44af9f 8 * Contributors:
sca8er 2:5853bf44af9f 9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
sca8er 2:5853bf44af9f 10 *
sca8er 2:5853bf44af9f 11 * THIS SOFTWARE IS NOT COPYRIGHTED
sca8er 2:5853bf44af9f 12 *
sca8er 2:5853bf44af9f 13 * This source code is offered for use in the public domain. You may
sca8er 2:5853bf44af9f 14 * use, modify or distribute it freely.
sca8er 2:5853bf44af9f 15 *
sca8er 2:5853bf44af9f 16 * This code is distributed in the hope that it will be useful but
sca8er 2:5853bf44af9f 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
sca8er 2:5853bf44af9f 18 * DISCLAIMED. This includes but is not limited to warranties of
sca8er 2:5853bf44af9f 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sca8er 2:5853bf44af9f 20 *
sca8er 2:5853bf44af9f 21 */
sca8er 2:5853bf44af9f 22
sca8er 2:5853bf44af9f 23 #ifndef __NTDDVOL_H
sca8er 2:5853bf44af9f 24 #define __NTDDVOL_H
sca8er 2:5853bf44af9f 25
sca8er 2:5853bf44af9f 26 #if __GNUC__ >=3
sca8er 2:5853bf44af9f 27 #pragma GCC system_header
sca8er 2:5853bf44af9f 28 #endif
sca8er 2:5853bf44af9f 29
sca8er 2:5853bf44af9f 30 #ifdef __cplusplus
sca8er 2:5853bf44af9f 31 extern "C" {
sca8er 2:5853bf44af9f 32 #endif
sca8er 2:5853bf44af9f 33
sca8er 2:5853bf44af9f 34 #include "ntddk.h"
sca8er 2:5853bf44af9f 35
sca8er 2:5853bf44af9f 36 #define IOCTL_VOLUME_BASE ((ULONG) 'V')
sca8er 2:5853bf44af9f 37
sca8er 2:5853bf44af9f 38 #define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \
sca8er 2:5853bf44af9f 39 CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 40
sca8er 2:5853bf44af9f 41 #define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \
sca8er 2:5853bf44af9f 42 CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 43
sca8er 2:5853bf44af9f 44 #define IOCTL_VOLUME_READ_PLEX \
sca8er 2:5853bf44af9f 45 CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
sca8er 2:5853bf44af9f 46
sca8er 2:5853bf44af9f 47 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
sca8er 2:5853bf44af9f 48 CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 49
sca8er 2:5853bf44af9f 50 #define IOCTL_VOLUME_IS_CLUSTERED \
sca8er 2:5853bf44af9f 51 CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 52
sca8er 2:5853bf44af9f 53 #define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \
sca8er 2:5853bf44af9f 54 CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 55
sca8er 2:5853bf44af9f 56 #define IOCTL_VOLUME_IS_PARTITION \
sca8er 2:5853bf44af9f 57 CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 58
sca8er 2:5853bf44af9f 59 #define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
sca8er 2:5853bf44af9f 60 CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 61
sca8er 2:5853bf44af9f 62 #define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
sca8er 2:5853bf44af9f 63 CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 64
sca8er 2:5853bf44af9f 65 #define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \
sca8er 2:5853bf44af9f 66 CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 67
sca8er 2:5853bf44af9f 68 #define IOCTL_VOLUME_ONLINE \
sca8er 2:5853bf44af9f 69 CTL_CODE(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
sca8er 2:5853bf44af9f 70
sca8er 2:5853bf44af9f 71 #define IOCTL_VOLUME_OFFLINE \
sca8er 2:5853bf44af9f 72 CTL_CODE(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
sca8er 2:5853bf44af9f 73
sca8er 2:5853bf44af9f 74 #define IOCTL_VOLUME_IS_OFFLINE \
sca8er 2:5853bf44af9f 75 CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 76
sca8er 2:5853bf44af9f 77 #define IOCTL_VOLUME_IS_IO_CAPABLE \
sca8er 2:5853bf44af9f 78 CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 79
sca8er 2:5853bf44af9f 80 #define IOCTL_VOLUME_QUERY_FAILOVER_SET \
sca8er 2:5853bf44af9f 81 CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
sca8er 2:5853bf44af9f 82
sca8er 2:5853bf44af9f 83
sca8er 2:5853bf44af9f 84 typedef struct _VOLUME_LOGICAL_OFFSET {
sca8er 2:5853bf44af9f 85 LONGLONG LogicalOffset;
sca8er 2:5853bf44af9f 86 } VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET;
sca8er 2:5853bf44af9f 87
sca8er 2:5853bf44af9f 88 typedef struct _VOLUME_PHYSICAL_OFFSET {
sca8er 2:5853bf44af9f 89 ULONG DiskNumber;
sca8er 2:5853bf44af9f 90 LONGLONG Offset;
sca8er 2:5853bf44af9f 91 } VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET;
sca8er 2:5853bf44af9f 92
sca8er 2:5853bf44af9f 93 typedef struct _VOLUME_PHYSICAL_OFFSETS {
sca8er 2:5853bf44af9f 94 ULONG NumberOfPhysicalOffsets;
sca8er 2:5853bf44af9f 95 VOLUME_PHYSICAL_OFFSET PhysicalOffset[1];
sca8er 2:5853bf44af9f 96 } VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS;
sca8er 2:5853bf44af9f 97
sca8er 2:5853bf44af9f 98 typedef struct _VOLUME_READ_PLEX_INPUT {
sca8er 2:5853bf44af9f 99 LARGE_INTEGER ByteOffset;
sca8er 2:5853bf44af9f 100 ULONG Length;
sca8er 2:5853bf44af9f 101 ULONG PlexNumber;
sca8er 2:5853bf44af9f 102 } VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT;
sca8er 2:5853bf44af9f 103
sca8er 2:5853bf44af9f 104 typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
sca8er 2:5853bf44af9f 105 ULONGLONG GptAttributes;
sca8er 2:5853bf44af9f 106 } VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
sca8er 2:5853bf44af9f 107
sca8er 2:5853bf44af9f 108 typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
sca8er 2:5853bf44af9f 109 ULONGLONG GptAttributes;
sca8er 2:5853bf44af9f 110 BOOLEAN RevertOnClose;
sca8er 2:5853bf44af9f 111 BOOLEAN ApplyToAllConnectedVolumes;
sca8er 2:5853bf44af9f 112 USHORT Reserved1;
sca8er 2:5853bf44af9f 113 ULONG Reserved2;
sca8er 2:5853bf44af9f 114 } VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
sca8er 2:5853bf44af9f 115
sca8er 2:5853bf44af9f 116 typedef struct _DISK_EXTENT {
sca8er 2:5853bf44af9f 117 ULONG DiskNumber;
sca8er 2:5853bf44af9f 118 LARGE_INTEGER StartingOffset;
sca8er 2:5853bf44af9f 119 LARGE_INTEGER ExtentLength;
sca8er 2:5853bf44af9f 120 } DISK_EXTENT, *PDISK_EXTENT;
sca8er 2:5853bf44af9f 121
sca8er 2:5853bf44af9f 122 typedef struct _VOLUME_DISK_EXTENTS {
sca8er 2:5853bf44af9f 123 ULONG NumberOfDiskExtents;
sca8er 2:5853bf44af9f 124 DISK_EXTENT Extents[1];
sca8er 2:5853bf44af9f 125 } VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
sca8er 2:5853bf44af9f 126
sca8er 2:5853bf44af9f 127 typedef struct _VOLUME_NUMBER {
sca8er 2:5853bf44af9f 128 ULONG VolumeNumber;
sca8er 2:5853bf44af9f 129 WCHAR VolumeManagerName[8];
sca8er 2:5853bf44af9f 130 } VOLUME_NUMBER, *PVOLUME_NUMBER;
sca8er 2:5853bf44af9f 131
sca8er 2:5853bf44af9f 132 typedef struct _VOLUME_FAILOVER_SET {
sca8er 2:5853bf44af9f 133 ULONG NumberOfDisks;
sca8er 2:5853bf44af9f 134 ULONG DiskNumbers[1];
sca8er 2:5853bf44af9f 135 } VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET;
sca8er 2:5853bf44af9f 136
sca8er 2:5853bf44af9f 137 #ifdef __cplusplus
sca8er 2:5853bf44af9f 138 }
sca8er 2:5853bf44af9f 139 #endif
sca8er 2:5853bf44af9f 140
sca8er 2:5853bf44af9f 141 #endif /* __NTDDVOL_H */