Add virtdisk.h and update windows.h git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3190 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/ChangeLog b/mingw-w64-headers/include/ChangeLog index 511e746..9c07bd9 100644 --- a/mingw-w64-headers/include/ChangeLog +++ b/mingw-w64-headers/include/ChangeLog
@@ -1,5 +1,10 @@ 2010-08-09 Jonathan Yong <jon_y@sourceforge.net> + * virtdisk.h: New. + * windows.h: Add virtdisk.h include. + +2010-08-09 Jonathan Yong <jon_y@sourceforge.net> + * winnt.h (TRANSACTION_OUTCOME): New typedef. (POWER_PLATFORM_ROLE): Likewise. (TOKEN_ELEVATION_TYPE): Likewise.
diff --git a/mingw-w64-headers/include/virtdisk.h b/mingw-w64-headers/include/virtdisk.h new file mode 100644 index 0000000..789f7b9 --- /dev/null +++ b/mingw-w64-headers/include/virtdisk.h
@@ -0,0 +1,362 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ +#ifndef _INC_VIRTDISK +#define _INC_VIRTDISK + +#if (_WIN32_WINNT >= 0x0601) +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _ATTACH_VIRTUAL_DISK_FLAG { + ATTACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000, + ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY = 0x00000001, + ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER = 0x00000002, + ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004, + ATTACH_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008 +} ATTACH_VIRTUAL_DISK_FLAG; + +typedef enum _ATTACH_VIRTUAL_DISK_VERSION { + ATTACH_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + ATTACH_VIRTUAL_DISK_VERSION_1 = 1 +} ATTACH_VIRTUAL_DISK_VERSION; + +typedef enum _COMPACT_VIRTUAL_DISK_FLAG { + COMPACT_VIRTUAL_DISK_FLAG_NONE = 0x00000000 +} COMPACT_VIRTUAL_DISK_FLAG; + +typedef enum _COMPACT_VIRTUAL_DISK_VERSION { + COMPACT_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + COMPACT_VIRTUAL_DISK_VERSION_1 = 1 +} COMPACT_VIRTUAL_DISK_VERSION; + +typedef enum _CREATE_VIRTUAL_DISK_FLAG { + CREATE_VIRTUAL_DISK_FLAG_NONE = 0x00000000, + CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION = 0x00000001 +} CREATE_VIRTUAL_DISK_FLAG; + +typedef enum _CREATE_VIRTUAL_DISK_VERSION { + CREATE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + CREATE_VIRTUAL_DISK_VERSION_1 = 1 +} CREATE_VIRTUAL_DISK_VERSION; + +typedef enum _DEPENDENT_DISK_FLAG { + DEPENDENT_DISK_FLAG_NONE = 0x00000000, + DEPENDENT_DISK_FLAG_MULT_BACKING_FILES = 0x00000001, + DEPENDENT_DISK_FLAG_FULLY_ALLOCATED = 0x00000002, + DEPENDENT_DISK_FLAG_READ_ONLY = 0x00000004, + DEPENDENT_DISK_FLAG_REMOTE = 0x00000008, + DEPENDENT_DISK_FLAG_SYSTEM_VOLUME = 0x00000010, + DEPENDENT_DISK_FLAG_SYSTEM_VOLUME_PARENT = 0x00000020, + DEPENDENT_DISK_FLAG_REMOVABLE = 0x00000040, + DEPENDENT_DISK_FLAG_NO_DRIVE_LETTER = 0x00000080, + DEPENDENT_DISK_FLAG_PARENT = 0x00000100, + DEPENDENT_DISK_FLAG_NO_HOST_DISK = 0x00000200, + DEPENDENT_DISK_FLAG_PERMANENT_LIFETIME = 0x00000400 +} DEPENDENT_DISK_FLAG; + +typedef enum _EXPAND_VIRTUAL_DISK_VERSION { + EXPAND_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + EXPAND_VIRTUAL_DISK_VERSION_1 = 1 +} EXPAND_VIRTUAL_DISK_VERSION; + +typedef enum _DETACH_VIRTUAL_DISK_FLAG { + DETACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000 +} DETACH_VIRTUAL_DISK_FLAG; + +typedef enum _EXPAND_VIRTUAL_DISK_FLAG { + EXPAND_VIRTUAL_DISK_FLAG_NONE = 0x00000000 +} EXPAND_VIRTUAL_DISK_FLAG; + +typedef enum _GET_STORAGE_DEPENDENCY_FLAG { + GET_STORAGE_DEPENDENCY_FLAG_NONE = 0x00000000, + GET_STORAGE_DEPENDENCY_FLAG_HOST_VOLUMES = 0x00000001, + GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE = 0x00000002 +} GET_STORAGE_DEPENDENCY_FLAG; + +typedef enum _GET_VIRTUAL_DISK_INFO_VERSION { + GET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, + GET_VIRTUAL_DISK_INFO_SIZE = 1, + GET_VIRTUAL_DISK_INFO_IDENTIFIER = 2, + GET_VIRTUAL_DISK_INFO_PARENT_LOCATION = 3, + GET_VIRTUAL_DISK_INFO_PARENT_IDENTIFIER = 4, + GET_VIRTUAL_DISK_INFO_PARENT_TIMESTAMP = 5, + GET_VIRTUAL_DISK_INFO_VIRTUAL_STORAGE_TYPE = 6, + GET_VIRTUAL_DISK_INFO_PROVIDER_SUBTYPE = 7 +} GET_VIRTUAL_DISK_INFO_VERSION; + +typedef enum _MERGE_VIRTUAL_DISK_FLAG { + MERGE_VIRTUAL_DISK_FLAG_NONE = 0x00000000 +} MERGE_VIRTUAL_DISK_FLAG; + +typedef enum _MERGE_VIRTUAL_DISK_VERSION { + MERGE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + MERGE_VIRTUAL_DISK_VERSION_1 = 1 +} MERGE_VIRTUAL_DISK_VERSION; + +typedef enum _OPEN_VIRTUAL_DISK_FLAG { + OPEN_VIRTUAL_DISK_FLAG_NONE = 0x00000000, + OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS = 0x00000001, + OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE = 0x00000002, + OPEN_VIRTUAL_DISK_FLAG_BOOT_DRIVE = 0x00000004 +} OPEN_VIRTUAL_DISK_FLAG; + +typedef enum _OPEN_VIRTUAL_DISK_VERSION { + OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0, + OPEN_VIRTUAL_DISK_VERSION_1 = 1 +} OPEN_VIRTUAL_DISK_VERSION; + +typedef enum _SET_VIRTUAL_DISK_INFO_VERSION { + SET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0, + SET_VIRTUAL_DISK_INFO_PARENT_PATH = 1, + SET_VIRTUAL_DISK_INFO_IDENTIFIER = 2 +} SET_VIRTUAL_DISK_INFO_VERSION; + +typedef enum _STORAGE_DEPENDENCY_INFO_VERSION { + STORAGE_DEPENDENCY_INFO_VERSION_UNSPECIFIED = 0, + STORAGE_DEPENDENCY_INFO_VERSION_1 = 1, + STORAGE_DEPENDENCY_INFO_VERSION_2 = 2 +} STORAGE_DEPENDENCY_INFO_VERSION; + +typedef enum _VIRTUAL_DISK_ACCESS_MASK { + VIRTUAL_DISK_ACCESS_ATTACH_RO = 0x00010000, + VIRTUAL_DISK_ACCESS_ATTACH_RW = 0x00020000, + VIRTUAL_DISK_ACCESS_DETACH = 0x00040000, + VIRTUAL_DISK_ACCESS_GET_INFO = 0x00080000, + VIRTUAL_DISK_ACCESS_CREATE = 0x00100000, + VIRTUAL_DISK_ACCESS_METAOPS = 0x00200000, + VIRTUAL_DISK_ACCESS_READ = 0x000d0000, + VIRTUAL_DISK_ACCESS_ALL = 0x003f0000, + VIRTUAL_DISK_ACCESS_WRITABLE = 0x00320000 +} VIRTUAL_DISK_ACCESS_MASK; + +typedef struct _VIRTUAL_STORAGE_TYPE { + ULONG DeviceId; + GUID VendorId; +} VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE; + +typedef struct _ATTACH_VIRTUAL_DISK_PARAMETERS { + ATTACH_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONG Reserved; + } Version1; + } DUMMYUNIONNAME; +} ATTACH_VIRTUAL_DISK_PARAMETERS, *PATTACH_VIRTUAL_DISK_PARAMETERS; + +typedef struct _COMPACT_VIRTUAL_DISK_PARAMETERS { + COMPACT_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONG Reserved; + } Version1; + } DUMMYUNIONNAME; +} COMPACT_VIRTUAL_DISK_PARAMETERS, *PCOMPACT_VIRTUAL_DISK_PARAMETERS; + +typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS { + CREATE_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + GUID UniqueId; + ULONGLONG MaximumSize; + ULONG BlockSizeInBytes; + ULONG SectorSizeInBytes; + PCWSTR ParentPath; + PCWSTR SourcePath; + } Version1; + } DUMMYUNIONNAME; +} CREATE_VIRTUAL_DISK_PARAMETERS, *PCREATE_VIRTUAL_DISK_PARAMETERS; + +typedef struct _EXPAND_VIRTUAL_DISK_PARAMETERS { + EXPAND_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONGLONG NewSize; + } Version1; + } DUMMYUNIONNAME; +} EXPAND_VIRTUAL_DISK_PARAMETERS, *PEXPAND_VIRTUAL_DISK_PARAMETERS; + +typedef struct _GET_VIRTUAL_DISK_INFO { + GET_VIRTUAL_DISK_INFO_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONGLONG VirtualSize; + ULONGLONG PhysicalSize; + ULONG BlockSize; + ULONG SectorSize; + } Size; + GUID Identifier; + __MINGW_EXTENSION struct { + BOOL ParentResolved; + WCHAR ParentLocationBuffer[1]; + } ParentLocation; + GUID ParentIdentifier; + ULONG ParentTimestamp; + VIRTUAL_STORAGE_TYPE VirtualStorageType; + ULONG ProviderSubtype; + } DUMMYUNIONNAME; +} GET_VIRTUAL_DISK_INFO, *PGET_VIRTUAL_DISK_INFO; + +typedef struct _MERGE_VIRTUAL_DISK_PARAMETERS { + MERGE_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONG MergeDepth; + } Version1; + } DUMMYUNIONNAME; +} MERGE_VIRTUAL_DISK_PARAMETERS, *PMERGE_VIRTUAL_DISK_PARAMETERS; + +typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS { + OPEN_VIRTUAL_DISK_VERSION Version; + __MINGW_EXTENSION union { + __MINGW_EXTENSION struct { + ULONG RWDepth; + } Version1; + } DUMMYUNIONNAME; +} OPEN_VIRTUAL_DISK_PARAMETERS, *POPEN_VIRTUAL_DISK_PARAMETERS; + +typedef struct _SET_VIRTUAL_DISK_INFO { + SET_VIRTUAL_DISK_INFO_VERSION Version; + __MINGW_EXTENSION union { + PCWSTR ParentFilePath; + GUID UniqueIdentifier; + } DUMMYUNIONNAME; +} SET_VIRTUAL_DISK_INFO, *PSET_VIRTUAL_DISK_INFO; + +typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_1 { + DEPENDENT_DISK_FLAG DependencyTypeFlags; + ULONG ProviderSpecificFlags; + VIRTUAL_STORAGE_TYPE VirtualStorageType; +} STORAGE_DEPENDENCY_INFO_TYPE_1, *PSTORAGE_DEPENDENCY_INFO_TYPE_1; + +typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_2 { + DEPENDENT_DISK_FLAG DependencyTypeFlags; + ULONG ProviderSpecificFlags; + VIRTUAL_STORAGE_TYPE VirtualStorageType; + ULONG AncestorLevel; + PWSTR DependencyDeviceName; + PWSTR HostVolumeName; + PWSTR DependentVolumeName; + PWSTR DependentVolumeRelativePath; +} STORAGE_DEPENDENCY_INFO_TYPE_2, *PSTORAGE_DEPENDENCY_INFO_TYPE_2; + +/* Fixme: Suppress GCC errors about "error: flexible array member in union" */ + +typedef struct _STORAGE_DEPENDENCY_INFO { + STORAGE_DEPENDENCY_INFO_VERSION Version; + ULONG NumberEntries; + __MINGW_EXTENSION union { + STORAGE_DEPENDENCY_INFO_TYPE_1 Version1Entries[1]; + STORAGE_DEPENDENCY_INFO_TYPE_2 Version2Entries[1]; + } DUMMYUNIONNAME; +} STORAGE_DEPENDENCY_INFO, *PSTORAGE_DEPENDENCY_INFO; + +typedef struct _VIRTUAL_DISK_PROGRESS { + DWORD OperationStatus; + ULONGLONG CurrentValue; + ULONGLONG CompletionValue; +} VIRTUAL_DISK_PROGRESS, *PVIRTUAL_DISK_PROGRESS; + +#define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0 +#define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1 +#define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2 + +DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT,0xEC984AEC,0xA0F9,0x47e9,0x90,0x1F,0x71,0x41,0x5A,0x66,0x34,0x5B); + +DWORD WINAPI AttachVirtualDisk( + HANDLE VirtualDiskHandle, + PSECURITY_DESCRIPTOR SecurityDescriptor, + ATTACH_VIRTUAL_DISK_FLAG Flags, + ULONG ProviderSpecificFlags, + PATTACH_VIRTUAL_DISK_PARAMETERS Parameters, + LPOVERLAPPED Overlapped +); + +DWORD WINAPI CompactVirtualDisk( + HANDLE VirtualDiskHandle, + COMPACT_VIRTUAL_DISK_FLAG Flags, + PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters, + LPOVERLAPPED Overlapped +); + +DWORD WINAPI CreateVirtualDisk( + PVIRTUAL_STORAGE_TYPE VirtualStorageType, + PCWSTR Path, + VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, + PSECURITY_DESCRIPTOR SecurityDescriptor, + CREATE_VIRTUAL_DISK_FLAG Flags, + ULONG ProviderSpecificFlags, + PCREATE_VIRTUAL_DISK_PARAMETERS Parameters, + LPOVERLAPPED Overlapped, + PHANDLE Handle +); + +DWORD WINAPI DetachVirtualDisk( + HANDLE VirtualDiskHandle, + DETACH_VIRTUAL_DISK_FLAG Flags, + ULONG ProviderSpecificFlags +); + +DWORD WINAPI ExpandVirtualDisk( + HANDLE VirtualDiskHandle, + EXPAND_VIRTUAL_DISK_FLAG Flags, + PEXPAND_VIRTUAL_DISK_PARAMETERS Parameters, + LPOVERLAPPED Overlapped +); + +DWORD WINAPI GetStorageDependencyInformation( + HANDLE ObjectHandle, + GET_STORAGE_DEPENDENCY_FLAG Flags, + ULONG StorageDependencyInfoSize, + PSTORAGE_DEPENDENCY_INFO StorageDependencyInfo, + PULONG SizeUsed +); + +DWORD WINAPI GetVirtualDiskInformation( + HANDLE VirtualDiskHandle, + PULONG VirtualDiskInfoSize, + PGET_VIRTUAL_DISK_INFO VirtualDiskInfo, + PULONG SizeUsed +); + +DWORD WINAPI GetVirtualDiskOperationProgress( + HANDLE VirtualDiskHandle, + LPOVERLAPPED Overlapped, + PVIRTUAL_DISK_PROGRESS Progress +); + +DWORD WINAPI GetVirtualDiskPhysicalPath( + HANDLE VirtualDiskHandle, + PULONG DiskPathSizeInBytes, + PWSTR DiskPath +); + +DWORD WINAPI MergeVirtualDisk( + HANDLE VirtualDiskHandle, + MERGE_VIRTUAL_DISK_FLAG Flags, + PMERGE_VIRTUAL_DISK_PARAMETERS Parameters, + LPOVERLAPPED Overlapped +); + +DWORD WINAPI OpenVirtualDisk( + PVIRTUAL_STORAGE_TYPE VirtualStorageType, + PCWSTR Path, + VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, + OPEN_VIRTUAL_DISK_FLAG Flags, + POPEN_VIRTUAL_DISK_PARAMETERS Parameters, + PHANDLE Handle +); + +DWORD WINAPI SetVirtualDiskInformation( + HANDLE VirtualDiskHandle, + PSET_VIRTUAL_DISK_INFO VirtualDiskInfo +); + +#ifdef __cplusplus +} +#endif +#endif /*(_WIN32_WINNT >= 0x0601)*/ +#endif /*_INC_VIRTDISK*/
diff --git a/mingw-w64-headers/include/windows.h b/mingw-w64-headers/include/windows.h index e15ebc9..91ad869 100644 --- a/mingw-w64-headers/include/windows.h +++ b/mingw-w64-headers/include/windows.h
@@ -69,6 +69,7 @@ #include <winreg.h> #include <winnetwk.h> #include <ktmtypes.h> +#include <virtdisk.h> #ifndef WIN32_LEAN_AND_MEAN #include <cderr.h>