IVdsDiskPartitionMF::FormatPartitionEx 方法 (vds.h)

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

设置现有 OEM、ESP 或未知分区的格式。

语法

HRESULT FormatPartitionEx(
  [in]  ULONGLONG ullOffset,
  [in]  LPWSTR    pwszFileSystemTypeName,
  [in]  USHORT    usFileSystemRevision,
  [in]  ULONG     ulDesiredUnitAllocationSize,
  [in]  LPWSTR    pwszLabel,
  [in]  BOOL      bForce,
  [in]  BOOL      bQuickFormat,
  [in]  BOOL      bEnableCompression,
  [out] IVdsAsync **ppAsync
);

参数

[in] ullOffset

分区从磁盘开头的字节偏移量。 此偏移量必须是分区开始的偏移量。

[in] pwszFileSystemTypeName

一个 以 NULL 结尾的 Unicode 字符串,包含用于格式化分区的文件系统的名称。 必须为 NULL 或以下值之一:“NTFS”、“FAT”、“FAT32”、“UDF”或“EXFAT”。 如果此参数为 NULL,则使用默认值。

[in] usFileSystemRevision

文件系统的修订(如果有)。 此成员表示为 16 位二进制编码的十进制数,其中小数点在第二位和第三位之间隐含。 例如,值为 0x0250 表示修订版 2.50。

[in] ulDesiredUnitAllocationSize

文件系统的分配单元大小(以字节为单位)。 该值必须是 2 的幂。 如果值为 0,则将使用由文件系统类型确定的默认分配单元。 分配单元范围依赖于文件系统。

[in] pwszLabel

要分配给卷的新文件系统的以 Null 结尾的 Unicode 字符串。 最大标签大小取决于文件系统。

[in] bForce

确定文件系统格式是否强制使用的布尔值,而不管分区是否正在使用。

[in] bQuickFormat

确定文件系统卷是否为快速格式的布尔值。 快速格式不会验证卷上的每个扇区。

[in] bEnableCompression

用于确定是否在启用压缩的情况下创建文件系统的布尔值。

注意 如果文件系统不是 NTFS,则忽略此参数。
 

[out] ppAsync

指向 IVdsAsync 接口的指针,该接口在成功完成后接收 IVdsAsync 接口以监视和控制此操作。 调用方必须在使用完接口后释放收到的接口。

返回值

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

返回代码/值 说明
S_OK
已成功分区卷。
VDS_E_BAD_PROVIDER_DATA
0x80042441L
提供程序返回了错误数据。
VDS_E_DISK_REMOVEABLE
0x8004255AL
可移动媒体不支持此操作。
VDS_E_FS_NOT_DETERMINED
0x80042593L
无法确定默认文件系统。
VDS_E_MISSING_DISK
0x80042454L
磁盘缺失。
VDS_E_OBJECT_NOT_FOUND
0x80042405L
分区不存在。
VDS_E_PARTITION_NOT_OEM
0x8004256FL
非 OEM 分区不支持此操作。
 

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

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

注解

此方法仅设置 OEM、ESP 和未知分区的格式。 对于其他分区,必须使用 IVdsVolumeMF::FormatIVdsVolumeMF2::FormatEx 方法格式化相应的卷。 请注意,OEM、ESP 和未知分区不会作为卷公开,因此不能使用 FormatFormatEx 进行格式化

此方法不能用于格式化可移动媒体。

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

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

要求

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

另请参阅

IVdsAdvancedDisk::FormatPartition

IVdsDiskPartitionMF