[PATCH 1/3] include: Add virtdisk.h.
Gijs Vermeulen
gijsvrm at gmail.com
Mon May 28 14:55:20 CDT 2018
Based on a patch by Louis Lenders.
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
This patchset fixes: https://bugs.winehq.org/show_bug.cgi?id=42577
include/Makefile.in | 1 +
include/virtdisk.h | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 201 insertions(+)
create mode 100644 include/virtdisk.h
diff --git a/include/Makefile.in b/include/Makefile.in
index 78ab095d77..900e326653 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -631,6 +631,7 @@ SOURCES = \
verrsrc.h \
vfw.h \
vfwmsgs.h \
+ virtdisk.h \
vmr9.idl \
vmrender.idl \
vss.idl \
diff --git a/include/virtdisk.h b/include/virtdisk.h
new file mode 100644
index 0000000000..0e79bf8b2d
--- /dev/null
+++ b/include/virtdisk.h
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2017 Louis Lenders
+ * Copyright 2018 Gijs Vermeulen
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_VIRTDISK_DLL_H
+#define __WINE_VIRTDISK_DLL_H
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0
+#define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1
+#define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2
+
+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 _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 _MIRROR_VIRTUAL_DISK_FLAG {
+ MIRROR_VIRTUAL_DISK_FLAG_NONE = 0x00000000,
+ MIRROR_VIRTUAL_DISK_FLAG_EXISTING_FILE = 0x00000001
+} MIRROR_VIRTUAL_DISK_FLAG;
+
+typedef enum _MIRROR_VIRTUAL_DISK_VERSION {
+ MIRROR_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
+ MIRROR_VIRTUAL_DISK_VERSION_1 = 1
+} MIRROR_VIRTUAL_DISK_VERSION;
+
+typedef enum _MERGE_VIRTUAL_DISK_FLAG {
+ MERGE_VIRTUAL_DISK_FLAG_NONE = 0x00000000
+} MERGE_VIRTUAL_DISK_FLAG;
+
+typedef enum _STORAGE_DEPENDENCY_INFO_VERSION
+{
+ STORAGE_DEPENDENCY_INFO_VERSION_UNSPECIFIED = 0x0,
+ STORAGE_DEPENDENCY_INFO_VERSION_1 = 0x1,
+ STORAGE_DEPENDENCY_INFO_VERSION_2 = 0x2
+} STORAGE_DEPENDENCY_INFO_VERSION;
+
+typedef enum _VIRTUAL_DISK_ACCESS_MASK {
+ VIRTUAL_DISK_ACCESS_NONE = 0x00000000,
+ 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;
+ __C89_NAMELESS union {
+ struct {
+ ULONG Reserved;
+ } Version1;
+ } DUMMYUNIONNAME;
+} ATTACH_VIRTUAL_DISK_PARAMETERS, *PATTACH_VIRTUAL_DISK_PARAMETERS;
+
+typedef struct _COMPACT_VIRTUAL_DISK_PARAMETERS {
+ COMPACT_VIRTUAL_DISK_VERSION Version;
+ __C89_NAMELESS union {
+ struct {
+ ULONG Reserved;
+ } Version1;
+ } DUMMYUNIONNAME;
+} COMPACT_VIRTUAL_DISK_PARAMETERS, *PCOMPACT_VIRTUAL_DISK_PARAMETERS;
+
+typedef struct _EXPAND_VIRTUAL_DISK_PARAMETERS {
+ EXPAND_VIRTUAL_DISK_VERSION Version;
+ __C89_NAMELESS union {
+ struct {
+ ULONGLONG NewSize;
+ } Version1;
+ } DUMMYUNIONNAME;
+} EXPAND_VIRTUAL_DISK_PARAMETERS, *PEXPAND_VIRTUAL_DISK_PARAMETERS;
+
+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;
+
+typedef struct _STORAGE_DEPENDENCY_INFO
+{
+ STORAGE_DEPENDENCY_INFO_VERSION Version;
+ ULONG NumberEntries;
+ __C89_NAMELESS union
+ {
+ STORAGE_DEPENDENCY_INFO_TYPE_1 Version1Entries[1];
+ STORAGE_DEPENDENCY_INFO_TYPE_2 Version2Entries[1];
+ } __C89_NAMELESSUNIONNAME;
+} STORAGE_DEPENDENCY_INFO, *PSTORAGE_DEPENDENCY_INFO;
+
+typedef struct _VIRTUAL_DISK_PROGRESS {
+ DWORD OperationStatus;
+ ULONGLONG CurrentValue;
+ ULONGLONG CompletionValue;
+} VIRTUAL_DISK_PROGRESS, *PVIRTUAL_DISK_PROGRESS;
+
+DWORD WINAPI GetStorageDependencyInformation(HANDLE obj, GET_STORAGE_DEPENDENCY_FLAG flags, ULONG size, STORAGE_DEPENDENCY_INFO *info, ULONG *used);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WINE_VIRTDISK_DLL_H */
--
2.13.6
More information about the wine-devel
mailing list