mirror of https://github.com/UMSKT/xpmgr.git
179 lines
4.3 KiB
Plaintext
179 lines
4.3 KiB
Plaintext
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 2008
|
|
//
|
|
// Abstract:
|
|
// Declarations of interfaces and types implemented by virtual disk
|
|
// provider.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
cpp_quote("#if (WINVER >= _WIN32_WINNT_WIN7)")
|
|
|
|
interface IVdsVdProvider;
|
|
interface IVdsVDisk;
|
|
interface IVdsOpenVDisk;
|
|
|
|
typedef struct _VDS_CREATE_VDISK_PARAMETERS
|
|
{
|
|
GUID UniqueId;
|
|
ULONGLONG MaximumSize;
|
|
ULONG BlockSizeInBytes;
|
|
ULONG SectorSizeInBytes;
|
|
[string] LPWSTR pParentPath;
|
|
[string] LPWSTR pSourcePath;
|
|
} VDS_CREATE_VDISK_PARAMETERS, *PVDS_CREATE_VDISK_PARAMETERS;
|
|
|
|
[
|
|
object,
|
|
uuid(b481498c-8354-45f9-84a0-0bdd2832a91f),
|
|
pointer_default(unique)
|
|
]
|
|
interface IVdsVdProvider : IUnknown
|
|
{
|
|
[helpstring("method QueryVDisks")]
|
|
HRESULT QueryVDisks(
|
|
[out] IEnumVdsObject** ppEnum
|
|
);
|
|
|
|
[helpstring("method CreateVDisk")]
|
|
HRESULT CreateVDisk(
|
|
[in] PVIRTUAL_STORAGE_TYPE VirtualDeviceType,
|
|
[in, string] LPWSTR pPath,
|
|
[in, string, unique] LPWSTR pStringSecurityDescriptor,
|
|
[in] CREATE_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG ProviderSpecificFlags,
|
|
[in] ULONG Reserved,
|
|
[in] PVDS_CREATE_VDISK_PARAMETERS pCreateDiskParameters,
|
|
[in, out, unique] IVdsAsync** ppAsync
|
|
);
|
|
|
|
[helpstring("method AddVDisk")]
|
|
HRESULT AddVDisk(
|
|
[in] PVIRTUAL_STORAGE_TYPE VirtualDeviceType,
|
|
[in, string] LPWSTR pPath,
|
|
[in, out, unique] IVdsVDisk** ppVDisk
|
|
);
|
|
|
|
HRESULT GetDiskFromVDisk(
|
|
[in] IVdsVDisk* pVDisk,
|
|
[out] IVdsDisk** ppDisk
|
|
);
|
|
|
|
HRESULT GetVDiskFromDisk(
|
|
[in] IVdsDisk* pDisk,
|
|
[out] IVdsVDisk** ppVDisk
|
|
);
|
|
}
|
|
|
|
|
|
typedef enum _VDS_VDISK_STATE {
|
|
VDS_VST_UNKNOWN = 0,
|
|
VDS_VST_ADDED,
|
|
VDS_VST_OPEN,
|
|
VDS_VST_ATTACH_PENDING,
|
|
VDS_VST_ATTACHED_NOT_OPEN,
|
|
VDS_VST_ATTACHED,
|
|
VDS_VST_DETACH_PENDING,
|
|
VDS_VST_COMPACTING,
|
|
VDS_VST_MERGING,
|
|
VDS_VST_EXPANDING,
|
|
VDS_VST_DELETED,
|
|
VDS_VST_MAX
|
|
} VDS_VDISK_STATE;
|
|
|
|
|
|
typedef struct _VDS_VDISK_PROPERTIES
|
|
{
|
|
VDS_OBJECT_ID Id;
|
|
VDS_VDISK_STATE State;
|
|
VIRTUAL_STORAGE_TYPE VirtualDeviceType;
|
|
ULONGLONG VirtualSize;
|
|
ULONGLONG PhysicalSize;
|
|
[string] LPWSTR pPath;
|
|
[string] LPWSTR pDeviceName;
|
|
DEPENDENT_DISK_FLAG DiskFlag;
|
|
BOOL bIsChild;
|
|
[string] LPWSTR pParentPath;
|
|
} VDS_VDISK_PROPERTIES, *PVDS_VDISK_PROPERTIES;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(1e062b84-e5e6-4b4b-8a25-67b81e8f13e8),
|
|
pointer_default(unique)
|
|
]
|
|
interface IVdsVDisk : IUnknown
|
|
{
|
|
HRESULT Open(
|
|
[in] VIRTUAL_DISK_ACCESS_MASK AccessMask,
|
|
[in] OPEN_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG ReadWriteDepth,
|
|
[out] IVdsOpenVDisk** ppOpenVDisk
|
|
);
|
|
|
|
HRESULT GetProperties(
|
|
[out] PVDS_VDISK_PROPERTIES pDiskProperties
|
|
);
|
|
|
|
HRESULT GetHostVolume(
|
|
[out] IVdsVolume** ppVolume
|
|
);
|
|
|
|
HRESULT GetDeviceName(
|
|
[out, string] LPWSTR *ppDeviceName);
|
|
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(75c8f324-f715-4fe3-a28e-f9011b61a4a1),
|
|
pointer_default(unique)
|
|
]
|
|
interface IVdsOpenVDisk : IUnknown
|
|
{
|
|
HRESULT Attach(
|
|
[in, unique] LPWSTR pStringSecurityDescriptor,
|
|
[in] ATTACH_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG ProviderSpecificFlags,
|
|
[in] ULONG TimeoutInMs,
|
|
[out] IVdsAsync** ppAsync
|
|
);
|
|
|
|
HRESULT Detach(
|
|
[in] DETACH_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG ProviderSpecificFlags
|
|
);
|
|
|
|
HRESULT DetachAndDelete(
|
|
[in] DETACH_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG ProviderSpecificFlags
|
|
);
|
|
|
|
HRESULT Compact(
|
|
[in] COMPACT_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG Reserved,
|
|
[out] IVdsAsync** ppAsync
|
|
);
|
|
|
|
HRESULT Merge(
|
|
[in] MERGE_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONG MergeDepth,
|
|
[out] IVdsAsync** ppAsync
|
|
);
|
|
|
|
HRESULT Expand(
|
|
[in] EXPAND_VIRTUAL_DISK_FLAG Flags,
|
|
[in] ULONGLONG NewSize,
|
|
[out] IVdsAsync** ppAsync
|
|
);
|
|
}
|
|
|
|
const ULONG VDS_ATTACH_VIRTUAL_DISK_FLAG_USE_FILE_ACL = 0x00000001;
|
|
|
|
cpp_quote("#endif // _WIN32_WINNT_WIN7")
|
|
|
|
|
|
|