IVdsVolumeMF::Format 方法 (vds.h)

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

设置当前卷上的文件系统的格式。

语法

HRESULT Format(
  [in]  VDS_FILE_SYSTEM_TYPE type,
  [in]  LPWSTR               pwszLabel,
  [in]  DWORD                dwUnitAllocationSize,
  [in]  BOOL                 bForce,
  [in]  BOOL                 bQuickFormat,
  [in]  BOOL                 bEnableCompression,
  [out] IVdsAsync            **ppAsync
);

参数

[in] type

一个VDS_FILE_SYSTEM_TYPE枚举值,该值指定要使用的文件系统。 必须是下列之一:VDS_FST_NTFS、VDS_FST_FAT、VDS_FST_FAT32或VDS_FST_UDF。

[in] pwszLabel

表示文件系统标签的字符串。

[in] dwUnitAllocationSize

文件系统的分配单元大小(以字节为单位),通常介于 512 和 65536 之间。

[in] bForce

如果 为 TRUE,则即使正在使用文件系统,也会无条件地格式化;否则,操作将失败。

[in] bQuickFormat

如果 为 TRUE,则 VDS 执行快速格式 (它不会验证卷) 上的每个扇区。

[in] bEnableCompression

如果 为 TRUE,则会在新格式化的文件系统上启用压缩。 压缩是 NTFS 的一项功能,对于 FAT 和 FAT32,会忽略压缩。

[out] ppAsync

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

返回值

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

返回代码/值 说明
S_OK
已成功格式化文件系统。
VDS_E_OPERATION_DENIED
0x8004240AL
如果调用方尝试格式化系统卷、启动卷、故障转储卷、休眠卷或页面文件卷,则会拒绝该操作。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
卷已失败。
VDS_E_PACK_OFFLINE
0x80042444L
包含该卷的包不可访问。 脱机包中的所有卷都不可访问。
 

此外, IVdsAsync 接口可以返回以下相关警告和错误代码。

返回代码/值 说明
VDS_S_VOLUME_COMPRESS_FAILED
0x00042443L
文件系统已格式化,但未压缩。
VDS_E_INCOMPATIBLE_FILE_SYSTEM
0x80042425L
文件系统不兼容。
VDS_E_INCOMPATIBLE_MEDIA
0x80042426L
媒体不兼容。
VDS_E_ACCESS_DENIED
0x80042427L
访问被拒绝。
VDS_E_MEDIA_WRITE_PROTECTED
0x80042428L
媒体受写保护。
VDS_E_BAD_LABEL
0x80042429L
标签无效。
VDS_E_CANT_QUICK_FORMAT
0x8004242AL
无法快速格式化卷。
VDS_E_IO_ERROR
0x8004242BL
格式化期间发生 IO 错误。
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
卷大小太小,无法格式化。
VDS_E_VOLUME_TOO_BIG
0x8004242DL
卷大小太大,无法格式化。
VDS_E_CLUSTER_SIZE_TOO_SMALL
0x8004242EL
群集大小太小,无法进行格式设置。
VDS_E_CLUSTER_SIZE_TOO_BIG
0x8004242FL
群集大小太大,无法进行格式设置。
VDS_E_CLUSTER_COUNT_BEYOND_32BITS
0x80042430L
群集数太大,无法表示为 32 位整数。
VDS_E_INVALID_FS_TYPE
0x80042561L
类型参数的值不是VDS_FST_NTFS、VDS_FST_FAT、VDS_FST_FAT32或VDS_FST_UDF。
VDS_E_CANT_INVALIDATE_FVE
0x80042592L
无法为卷禁用 BitLocker 加密。

备注

若要在动态磁盘上创建启动卷,必须先调用 IVdsVolume::SetFlags 来设置 VDS_VF_INSTALLABLE 标志,然后再调用 Format 来格式化卷。

如果 OEM 分区的格式设置为 FAT 或 FAT32,则分区类型不会更改。 如果使用 NTFS 格式化,分区类型将更改为PARTITION_IFS (0x07) 。 有关分区类型的信息,请参阅 CREATE_PARTITION_PARAMETERS

如果为受 BitLocker 全卷加密保护的卷调用此方法,则会对卷禁用 BitLocker 加密,直到用户重新启用它。

有关文件系统限制(例如最小和最大分配单元大小 (也称为群集大小) )的详细信息,请参阅 NTFS 技术参考FAT 技术参考

要求

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

另请参阅

IVdsAsync

IVdsVolumeMF

VDS_FILE_SYSTEM_TYPE