IOCTL_EHSTOR_BANDMGMT_SET_BAND_LOCATION IOCTL (ehstorbandmgmt.h)

使用 IOCTL_EHSTOR_BANDMGMT_SET_BAND_LOCATION 请求修改带托管存储设备中带的位置属性。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

Irp-AssociatedIrp.SystemBuffer> 处的缓冲区必须包含SET_BAND_LOCATION_PARAMETERS结构,后跟AUTH_KEYBAND_LOCATION_INFO结构。

如果 SET_BAND_LOCATION_PARAMETERSAuthKeyOffset 成员设置为EHSTOR_BANDMGR_NO_KEY,则系统缓冲区中的输入数据不需要包含AUTH_KEY结构。

输入缓冲区长度

Parameters.DeviceIoControl.InputBufferLength 指示缓冲区的大小(以字节为单位),缓冲区的大小 必须至少为 (SET_BAND_LOCATION_PARAMETERS) + sizeof (AUTH_KEY) + sizeof (BAND_LOCATION_INFO) 。

输出缓冲区

无。

输出缓冲区长度

无。

状态块

可以在“ 状态” 字段中返回以下值之一。

状态值 说明
STATUS_SUCCESS 带区的位置属性已更改。
STATUS_INVALID_DEVICE_REQUEST 存储设备不支持带管理。
STATUS_INVALID_BUFFER_SIZE 输入缓冲区大小无效。
STATUS_INVALID_PARAMETER 输入缓冲区中的信息无效。
STATUS_NOT_FOUND 找不到提供的选择条件的带。
STATUS_ACCESS_DENIED 提供的身份验证密钥无效。
STATUS_IO_DEVICE_ERROR 通信失败。 存储设备可能与安全协议不兼容。

注解

调整大小后保留的 LBA 中的数据不会由操作修改。 此外,如果在调整大小后跨卷的 LBA 范围仍在带内,则无需在重设大小操作期间卸载卷。

此请求对带表所做的更改在 IOCTL 请求完成之前以原子方式提交到设备。 因此,可以保证在系统或电源发生故障时,使用设置的所有属性修改带,或者根本不设置任何属性。

BAND_LOCATION_INFOBandSize 成员必须大于 0。 此 IOCTL 无法将带区重设为 0,导致带删除。 若要删除带区,请使用 IOCTL_EHSTOR_BANDMGMT_DELETE_BAND 请求。

如果 BAND_LOCATION_INFO 指定全局波段的属性,则 BandStart 必须设置为 0, 而 BandSize 必须设置为 –1。

要求

要求
最低受支持的客户端 从Windows 8开始可用
标头 ehstorbandmgmt.h (包括 EhStorBandMgmt.h)

另请参阅

BAND_LOCATION_INFO

IOCTL_EHSTOR_BANDMGMT_DELETE_BAND

SET_BAND_LOCATION_PARAMETERS