IVdsAdvancedDisk::Clean 方法 (vds.h)

[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

删除分区信息并取消初始化基本磁盘或动态磁盘。

Windows Server 2003: 可移动设备不支持 Clean 方法。

语法

HRESULT Clean(
  [in]  BOOL      bForce,
  [in]  BOOL      bForceOEM,
  [in]  BOOL      bFullClean,
  [out] IVdsAsync **ppAsync
);

参数

[in] bForce

如果 为 TRUE,则清理包含数据卷或 ESP 分区的磁盘。

[in] bForceOEM

如果 为 TRUE,则清除下表中包含已知 OEM 分区的基于 MBR 的磁盘,或清理包含任何 OEM 分区的基于 GPT 的磁盘。 OEM 分区在基于 GPT 的磁盘上设置了GPT_ATTRIBUTE_PLATFORM_REQUIRED标志。

分区类型 说明
0x12 EISA 分区。
0x84 笔记本电脑的休眠分区。
0xA0 某些 HP 笔记本电脑的诊断分区。
0xDE 由 Dell 定义的分区。
0xFE IBM IML 分区。

[in] bFullClean

如果 为 TRUE,则通过将每个扇区上的数据替换为零来清理整个磁盘;否则,此方法仅清除磁盘上的第一个和最后一个兆字节。

[out] ppAsync

指向 IVdsAsync 接口指针的指针的地址,VDS 在返回时初始化该指针。 调用方必须释放 接口。 使用此指针可以取消、等待或查询操作的状态。

返回值

此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。

返回代码/值 说明
S_OK
已成功删除数据,并且磁盘未初始化。
VDS_E_NO_MEDIA
0x80042412L
可移动设备中没有媒体。
VDS_E_MISSING_DISK
0x80042454L
磁盘缺失。
VDS_E_OPERATION_DENIED
0x8004240AL
在下列任一情况下,操作失败:
  • 磁盘包含 OEM 分区, bForceOEM 为 false。
  • 磁盘包含卷或 ESP 分区, bForceFALSE
  • 无论 bForceTRUE 还是 FALSE,磁盘都包含其中一个系统卷。 系统卷可以是以下任一项:
    • 包含操作系统加载程序的卷。
    • 一个启动卷,其中包含 system32 目录。
    • 包含页面文件或休眠文件的卷,或用作故障转储的卷。
    • ESP 分区 (系统从) 启动的分区。
VDS_S_DISK_PARTIALLY_CLEANED
0x0004241AL
分区表已清理,但并非所有扇区都在完全清理期间清理。 或者,清理第一兆字节和最后一兆字节的某些扇区;但是,除非清理为完全清理,否则不会清理其余扇区。

备注

在调用此方法之前,调用方应通过为每个卷调用 IVdsVolumeMF::D ismount 来卸载磁盘上装载的任何卷。

除非先删除磁盘上的所有数据卷、已知 OEM 分区和 ESP 分区,否则将 bForce 参数和/或 bForceOEM 参数和/或两者结合使用。 此要求不包括元数据分区,例如 MSR、LDM 元数据分区和未知 OEM 分区。

Windows Server 2003: 可移动设备不支持 Clean 方法。

无论调用是否启动异步操作,实现者都必须返回指向此方法的 IVdsAsync 接口的指针。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 vds.h
Library Uuid.lib

请参阅

Disk 对象

IVdsAdvancedDisk

IVdsAsync