IOCTL_EHSTOR_BANDMGMT_SET_BAND_SECURITY IOCTL (ehstorbandmgmt.h)
使用 IOCTL_EHSTOR_BANDMGMT_SET_BAND_SECURITY 请求修改带托管存储设备中带的安全属性。
主要代码
输入缓冲区
Irp-AssociatedIrp.SystemBuffer> 处的缓冲区必须包含SET_BAND_SECURITY_PARAMETERS结构,后跟AUTH_KEY和BAND_SECURITY_INFO结构。
如果 SET_BAND_SECURITY_PARAMETERS 的 AuthKeyOffset 成员设置为EHSTOR_BANDMGR_NO_KEY,则系统缓冲区中的输入数据不需要包含AUTH_KEY结构。 此外,如果未提供新的身份验证密钥,则不包含更新的密钥结构。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 指示缓冲区的大小(以字节为单位),当需要所有输入结构时,缓冲区的大小 必须至少为 (SET_BAND_SECURITY_PARAMETERS) + 2 * sizeof (AUTH_KEY) + sizeof (BAND_SECURITY_INFO) 。
输出缓冲区
无。
输出缓冲区长度
无。
状态块
可以在“ 状态” 字段中返回以下值之一。
状态值 | 说明 |
---|---|
STATUS_SUCCESS | 波段的安全属性已更改。 |
STATUS_INVALID_DEVICE_REQUEST | 存储设备不支持带管理。 |
STATUS_INVALID_BUFFER_SIZE | 输入缓冲区大小无效。 |
STATUS_INVALID_PARAMETER | 输入缓冲区中的信息无效。 |
STATUS_NOT_FOUND | 找不到提供的选择条件的带。 |
STATUS_ACCESS_DENIED | 提供的身份验证密钥无效。 |
STATUS_IO_DEVICE_ERROR | 通信失败。 存储设备可能与安全协议不兼容。 |
注解
带的读取和写入锁定是使用此 IOCTL 在系统缓冲区中作为输入包含在 BAND_SECURITY_INFO 结构中设置的。
身份验证密钥更改不会影响带的锁定状态。 无需卸载卷,就使用此请求更改身份验证密钥。
解锁带区时,这意味着 BAND_SECURITY_INFO 的 Readlock 或 WriteLock 成员为 FALSE,如果在 SET_BAND_SECURITY_PARAMETERS 的 Flags 成员中设置了SETBANDSEC_AUTHKEY_CACHING_ENABLED,接收器驱动程序将缓存提供的身份验证密钥。
作为一种特殊情况,此 IOCTL 可用于通知 silo 驱动程序在 未使用 BAND_SECURITY_INFO 中的锁定成员的情况下解锁了带。 为此,SET_BAND_SECURITY_PARAMETERS 的 NewAuthKeyOffset 成员设置为 CurrentAuthKeyOffset,并将 BandSecurityInfoOffset 设置为 0。 在这种情况下,不会发生任何安全更改,但 CurrentAuthKeyOffset 中提供的密钥将缓存在内存中,前提是在 Flags 中设置了SETBANDSEC_AUTHKEY_CACHING_ENABLED。
此请求对带表所做的更改在 IOCTL 请求完成之前以原子方式提交到设备。 因此,可以保证在系统或电源发生故障时,使用设置的所有属性修改带,或者根本不设置任何属性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用 |
标头 | ehstorbandmgmt.h (包括 EhStorBandMgmt.h) |