IVdsVdProvider::CreateVDisk 方法 (vds.h)
[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
创建虚拟磁盘。
语法
HRESULT CreateVDisk(
[in] PVIRTUAL_STORAGE_TYPE VirtualDeviceType,
[in] LPWSTR pPath,
[in] LPWSTR pStringSecurityDescriptor,
[in] CREATE_VIRTUAL_DISK_FLAG Flags,
[in] ULONG ProviderSpecificFlags,
[in] ULONG Reserved,
[in] PVDS_CREATE_VDISK_PARAMETERS pCreateDiskParameters,
[out] IVdsAsync **ppAsync
);
参数
[in] VirtualDeviceType
指向 VIRTUAL_STORAGE_TYPE 结构的指针,该结构指定要创建的虚拟磁盘的类型。
[in] pPath
一个 以 NULL 结尾的宽字符字符串,其中包含要为虚拟磁盘创建的后备文件的名称和目录路径。
[in] pStringSecurityDescriptor
一个 以 NULL 结尾的宽字符字符串,其中包含要应用于虚拟磁盘的安全描述符。 如果此参数为 NULL,将使用调用方访问令牌中的安全描述符。
[in] Flags
CREATE_VIRTUAL_DISK_FLAG枚举值的位掩码,用于指定虚拟磁盘的创建方式。
Value | 含义 |
---|---|
|
未指定任何标志。 |
|
预先分配虚拟磁盘的虚拟大小所需的所有物理空间。 此标志仅对固定大小的虚拟磁盘有效。 |
[in] ProviderSpecificFlags
特定于所创建的虚拟磁盘类型的标志的位掩码。 这些标志特定于提供程序。 对于 Microsoft 虚拟磁盘提供程序,此参数必须为零。
[in] Reserved
参数是保留的,必须为零。
[in] pCreateDiskParameters
指向包含虚拟磁盘创建参数 的VDS_CREATE_VDISK_PARAMETERS 结构的指针。
[out] ppAsync
指向 IVdsAsync 接口的指针,该接口在成功完成后接收 IVdsAsync 接口以监视和控制此操作。 调用方必须在使用完接口后释放收到的接口。 如果在接口上调用 IVdsAsync::Wait 方法并返回成功 HRESULT 值,则必须通过在每个接口指针上调用 IUnknown::Release 方法释放VDS_ASYNC_OUTPUT结构中返回的接口。 但是,如果 Wait 返回失败的 HRESULT 值,或者如果 Wait 的 pHrResult 参数收到失败的 HRESULT 值,则 VDS_ASYNC_OUTPUT 结构中的接口指针为 NULL,不需要释放。 可以使用 Winerror.h 中定义的 SUCCEEDED 和 FAILED 宏测试成功或失败的 HRESULT 值。
返回值
此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
备注
应用程序必须通过调用 CoInitializeSecurity 函数来初始化进程范围的安全性。 dwImpLevel 参数应设置为 RPC_C_IMP_LEVEL_IMPERSONATE。
Windows Server 2008、Windows Vista 和 Windows Server 2003: 在 Windows 7 和 Windows Server 2008 R2 之前,不需要执行这些操作。
如果具有指定文件名的虚拟磁盘不存在,则会创建它。 如果虚拟磁盘已存在,则虚拟磁盘提供程序返回指向现有虚拟磁盘对象的接口指针,而无需重新创建文件。
要求
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | vds.h |
Library | Uuid.lib |