299 lines
9.7 KiB
C
299 lines
9.7 KiB
C
/*
|
|
* ntddvol.h Volume device I/O control codes
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
|
|
#ifndef _NTDDVOL_
|
|
#define _NTDDVOL_
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef IOCTL_VOLUME_BASE
|
|
|
|
/* Volume device I/O control codes */
|
|
#define IOCTL_VOLUME_BASE 0x00000056L
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_ONLINE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#define IOCTL_VOLUME_OFFLINE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#endif
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
#define IOCTL_VOLUME_IS_CLUSTERED \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#endif
|
|
|
|
/* Disk extent */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _DISK_EXTENT {
|
|
ULONG DiskNumber;
|
|
LARGE_INTEGER StartingOffset;
|
|
LARGE_INTEGER ExtentLength;
|
|
} DISK_EXTENT;
|
|
typedef DISK_EXTENT *PDISK_EXTENT;
|
|
#endif
|
|
|
|
/* Volume disk extents */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_DISK_EXTENTS {
|
|
ULONG NumberOfDiskExtents;
|
|
DISK_EXTENT Extents[ANYSIZE_ARRAY];
|
|
} VOLUME_DISK_EXTENTS;
|
|
typedef VOLUME_DISK_EXTENTS *PVOLUME_DISK_EXTENTS;
|
|
#endif
|
|
|
|
/* Volume get GPT attributes information */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
|
|
ULONGLONG GptAttributes;
|
|
} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
|
|
typedef VOLUME_GET_GPT_ATTRIBUTES_INFORMATION *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
|
|
#endif
|
|
|
|
#endif /* IOCTL_VOLUME_BASE */
|
|
|
|
/* Volume device I/O control codes */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_IS_OFFLINE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_IS_IO_CAPABLE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_QUERY_FAILOVER_SET \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#endif
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
#define IOCTL_VOLUME_IS_PARTITION \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_READ_PLEX \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS )
|
|
#define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#endif
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
#define IOCTL_VOLUME_GET_BC_PROPERTIES \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 15, METHOD_BUFFERED, FILE_READ_ACCESS )
|
|
#define IOCTL_VOLUME_ALLOCATE_BC_STREAM \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 16, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#define IOCTL_VOLUME_FREE_BC_STREAM \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 17, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#define IOCTL_VOLUME_IS_DYNAMIC \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 18, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_PREPARE_FOR_CRITICAL_IO \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 19, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#define IOCTL_VOLUME_QUERY_ALLOCATION_HINT \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 20, METHOD_OUT_DIRECT, FILE_READ_ACCESS )
|
|
#define IOCTL_VOLUME_UPDATE_PROPERTIES \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 21, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
#define IOCTL_VOLUME_QUERY_MINIMUM_SHRINK_SIZE \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 22, METHOD_BUFFERED, FILE_READ_ACCESS )
|
|
#define IOCTL_VOLUME_PREPARE_FOR_SHRINK \
|
|
CTL_CODE( IOCTL_VOLUME_BASE, 23, METHOD_BUFFERED, FILE_READ_ACCESS | \
|
|
FILE_WRITE_ACCESS )
|
|
#endif
|
|
|
|
/* Volume BC version number */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
#define IOCTL_VOLUME_BC_VERSION 1
|
|
#endif
|
|
|
|
/* Volume failover set */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_FAILOVER_SET {
|
|
ULONG NumberOfDisks;
|
|
ULONG DiskNumbers[ANYSIZE_ARRAY];
|
|
} VOLUME_FAILOVER_SET;
|
|
typedef VOLUME_FAILOVER_SET *PVOLUME_FAILOVER_SET;
|
|
#endif
|
|
|
|
/* Volume number */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_NUMBER {
|
|
ULONG VolumeNumber;
|
|
WCHAR VolumeManagerName[8];
|
|
} VOLUME_NUMBER;
|
|
typedef VOLUME_NUMBER *PVOLUME_NUMBER;
|
|
#endif
|
|
|
|
/* Volume logical offset */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_LOGICAL_OFFSET {
|
|
LONGLONG LogicalOffset;
|
|
} VOLUME_LOGICAL_OFFSET;
|
|
typedef VOLUME_LOGICAL_OFFSET *PVOLUME_LOGICAL_OFFSET;
|
|
#endif
|
|
|
|
/* Volume physical offset */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_PHYSICAL_OFFSET {
|
|
ULONG DiskNumber;
|
|
LONGLONG Offset;
|
|
} VOLUME_PHYSICAL_OFFSET;
|
|
typedef VOLUME_PHYSICAL_OFFSET *PVOLUME_PHYSICAL_OFFSET;
|
|
#endif
|
|
|
|
/* Volume physical offsets */
|
|
#if (NTDDI_VERSION >= 0x05000000)
|
|
typedef struct _VOLUME_PHYSICAL_OFFSETS {
|
|
ULONG NumberOfPhysicalOffsets;
|
|
VOLUME_PHYSICAL_OFFSET PhysicalOffset[ANYSIZE_ARRAY];
|
|
} VOLUME_PHYSICAL_OFFSETS;
|
|
typedef VOLUME_PHYSICAL_OFFSETS *PVOLUME_PHYSICAL_OFFSETS;
|
|
#endif
|
|
|
|
/* Volume read plex input */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
typedef struct _VOLUME_READ_PLEX_INPUT {
|
|
LARGE_INTEGER ByteOffset;
|
|
ULONG Length;
|
|
ULONG PlexNumber;
|
|
} VOLUME_READ_PLEX_INPUT;
|
|
typedef VOLUME_READ_PLEX_INPUT *PVOLUME_READ_PLEX_INPUT;
|
|
#endif
|
|
|
|
/* Volume set GPT attributes information */
|
|
#if (NTDDI_VERSION >= 0x05010000)
|
|
typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
|
|
ULONGLONG GptAttributes;
|
|
BOOLEAN RevertOnClose;
|
|
BOOLEAN ApplyToAllConnectedVolumes;
|
|
USHORT Reserved1;
|
|
ULONG Reserved2;
|
|
} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
|
|
typedef VOLUME_SET_GPT_ATTRIBUTES_INFORMATION *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
|
|
#endif
|
|
|
|
/* Volume get BC properties input */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_GET_BC_PROPERTIES_INPUT {
|
|
ULONG Version;
|
|
ULONG Reserved1;
|
|
ULONGLONG LowestByteOffset;
|
|
ULONGLONG HighestByteOffset;
|
|
ULONG AccessType;
|
|
ULONG AccessMode;
|
|
} VOLUME_GET_BC_PROPERTIES_INPUT;
|
|
typedef VOLUME_GET_BC_PROPERTIES_INPUT *PVOLUME_GET_BC_PROPERTIES_INPUT;
|
|
#endif
|
|
|
|
/* Volume get BC properties output */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_GET_BC_PROPERTIES_OUTPUT {
|
|
ULONG MaximumRequestsPerPeriod;
|
|
ULONG MinimumPeriod;
|
|
ULONGLONG MaximumRequestSize;
|
|
ULONG EstimatedTimePerRequest;
|
|
ULONG NumOutStandingRequests;
|
|
ULONGLONG RequestSize;
|
|
} VOLUME_GET_BC_PROPERTIES_OUTPUT;
|
|
typedef VOLUME_GET_BC_PROPERTIES_OUTPUT *PVOLUME_GET_BC_PROPERTIES_OUTPUT;
|
|
#endif
|
|
|
|
/* Volume allocate BC stream input */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_ALLOCATE_BC_STREAM_INPUT {
|
|
ULONG Version;
|
|
ULONG RequestsPerPeriod;
|
|
ULONG Period;
|
|
BOOLEAN RetryFailures;
|
|
BOOLEAN Discardable;
|
|
BOOLEAN Reserved1[2];
|
|
ULONGLONG LowestByteOffset;
|
|
ULONGLONG HighestByteOffset;
|
|
ULONG AccessType;
|
|
ULONG AccessMode;
|
|
} VOLUME_ALLOCATE_BC_STREAM_INPUT;
|
|
typedef VOLUME_ALLOCATE_BC_STREAM_INPUT *PVOLUME_ALLOCATE_BC_STREAM_INPUT;
|
|
#endif
|
|
|
|
/* Volume allocate BC stream output */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_ALLOCATE_BC_STREAM_OUTPUT {
|
|
ULONGLONG RequestSize;
|
|
ULONG NumOutStandingRequests;
|
|
} VOLUME_ALLOCATE_BC_STREAM_OUTPUT;
|
|
typedef VOLUME_ALLOCATE_BC_STREAM_OUTPUT *PVOLUME_ALLOCATE_BC_STREAM_OUTPUT;
|
|
#endif
|
|
|
|
/* File extent */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _FILE_EXTENT {
|
|
ULONGLONG VolumeOffset;
|
|
ULONGLONG ExtentLength;
|
|
} FILE_EXTENT;
|
|
typedef FILE_EXTENT *PFILE_EXTENT;
|
|
#endif
|
|
|
|
/* Volume critical I/O */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_CRITICAL_IO {
|
|
ULONG AccessType;
|
|
ULONG ExtentsCount;
|
|
FILE_EXTENT Extents[ANYSIZE_ARRAY];
|
|
} VOLUME_CRITICAL_IO;
|
|
typedef VOLUME_CRITICAL_IO *PVOLUME_CRITICAL_IO;
|
|
#endif
|
|
|
|
/* Volume allocation hint input */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_ALLOCATION_HINT_INPUT {
|
|
ULONG ClusterSize;
|
|
ULONG NumberOfClusters;
|
|
LONGLONG StartingClusterNumber;
|
|
} VOLUME_ALLOCATION_HINT_INPUT;
|
|
typedef VOLUME_ALLOCATION_HINT_INPUT *PVOLUME_ALLOCATION_HINT_INPUT;
|
|
#endif
|
|
|
|
/* Volume allocation hint output */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_ALLOCATION_HINT_OUTPUT {
|
|
ULONG Bitmap[ANYSIZE_ARRAY];
|
|
} VOLUME_ALLOCATION_HINT_OUTPUT;
|
|
typedef VOLUME_ALLOCATION_HINT_OUTPUT *PVOLUME_ALLOCATION_HINT_OUTPUT;
|
|
#endif
|
|
|
|
/* Volume shrink information */
|
|
#if (NTDDI_VERSION >= 0x06000000)
|
|
typedef struct _VOLUME_SHRINK_INFO {
|
|
ULONGLONG VolumeSize;
|
|
} VOLUME_SHRINK_INFO;
|
|
typedef VOLUME_SHRINK_INFO *PVOLUME_SHRINK_INFO;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* _NTDDVOL_ */
|