IVdsDisk3::QueryFreeExtents 方法 (vds.h)

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

返回磁盘上的可用盘区,并将其与指定的对齐大小对齐。

语法

HRESULT QueryFreeExtents(
  [in]  ULONG                ulAlign,
  [out] VDS_DISK_FREE_EXTENT **ppFreeExtentArray,
  [out] LONG                 *plNumberOfFreeExtents
);

参数

[in] ulAlign

对齐大小(以字节为单位)。 此值必须是磁盘扇区大小的倍数。 如果此参数为零,则使用卷的默认对齐值。 默认对齐方式取决于卷所在的磁盘大小。 所有分区和卷都使用以下注册表项下的值进行对齐:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

如果未设置此注册表项,则默认对齐方式为 1 MB(如果磁盘为 4 GB 或更大),如果磁盘小于 4 GB,则默认对齐方式为 64 KB。

[out] ppFreeExtentArray

接收 的指针变量的地址
VDS_DISK_FREE_EXTENT结构的数组,每个可用区各一个。 调用方必须使用 CoTaskMemFree 函数释放此数组。 如果没有可用区,则指针在输出时设置为 NULL ,无需释放。

[out] plNumberOfFreeExtents

指向接收 VDS_DISK_FREE_EXTENT 结构总数的变量的指针。 如果没有可用区,则指针在输出时设置为 NULL ,无需释放。

返回值

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

返回代码/值 说明
S_OK
已成功返回自由区信息。
S_FALSE
磁盘上没有可用盘区。
VDS_E_ALIGN_NOT_SECTOR_SIZE_MULTIPLE
0x80042554L
ulAlign 参数中指定的对齐值不是磁盘扇区大小的倍数。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 vds.h

另请参阅

IVdsDisk3