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.
Если для элемента AuthKeyOffsetSET_BAND_SECURITY_PARAMETERS задано значение EHSTOR_BANDMGR_NO_KEY, входные данные в системном буфере не должны включать AUTH_KEY структуру. Кроме того, если новый ключ проверки подлинности не предоставлен, обновленная структура ключа не включается.
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера в байтах, который должен быть не менее sizeof (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 , включенной в качестве входных данных в системный буфер.
Изменения ключа проверки подлинности не повлияют на состояние блокировки полосы. Нет необходимости отключать том, чтобы изменить ключ проверки подлинности с помощью этого запроса.
Если полоса разблокирована, то есть элементы Readlock или WriteLockBAND_SECURITY_INFO имеют значение FALSE, драйвер хранилища кэширует предоставленный ключ проверки подлинности, если SETBANDSEC_AUTHKEY_CACHING_ENABLED задан в элементе FlagsSET_BAND_SECURITY_PARAMETERS.
В особом случае этот IOCTL можно использовать для уведомления водителя силоса о том, что полоса была разблокирована без использования элементов блокировки в BAND_SECURITY_INFO. Для этого для элемента NewAuthKeyOffsetSET_BAND_SECURITY_PARAMETERS задано значение CurrentAuthKeyOffset , а для параметра BandSecurityInfoOffset — значение 0. В этом случае изменения системы безопасности не происходят, но ключ, предоставленный в CurrentAuthKeyOffset , кэшируется в памяти при условии, что SETBANDSEC_AUTHKEY_CACHING_ENABLED задан в разделе Флаги.
Изменения, внесенные в таблицу диапазонов этим запросом, фиксируются на устройстве атомарно до завершения запроса IOCTL. Таким образом, гарантируется, что полоса будет изменена со всеми заданными свойствами или вообще не будет задана, если произойдет сбой системы или питания.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно, начиная с Windows 8 |
Верхняя часть | ehstorbandmgmt.h (включая EhStorBandMgmt.h) |