xpmgr/BuildTools/Include/vdsvd.idl

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")