IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
Новые полосы создаются на устройстве хранения, управляемом полосой, с помощью запроса IOCTL_EHSTOR_BANDMGMT_CREATE_BAND . В таблицу записей группы добавляется новая полоса, которая включает в себя расположение и свойства безопасности полосы.
Основной код
Входной буфер
Буфер в Irp-AssociatedIrp.SystemBuffer> должен содержать структуру CREATE_BAND_PARAMETERS, за которой следует структура BAND_LOCATION_INFO, BAND_SECURITY_INFO и AUTH_KEY.
Если для элемента AuthKeyOffsetCREATE_BAND_PARAMETERS задано значение EHSTOR_BANDMGR_NO_KEY, входные данные в системном буфере не должны содержать AUTH_KEY структуру.
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength указывает размер буфера в байтах, который должен быть не менее sizeof (CREATE_BAND_PARAMETERS) + sizeof(BAND_LOCATION_INFO) + sizeof (BAND_SECURITY_INFO) + sizeof(AUTH_KEY).
Выходной буфер
Выходной буфер в Irp-AssociatedIrp.SystemBuffer> при необходимости содержит значение ULONG для идентификатора только что созданного диапазона.
Длина выходного буфера
Параметр Parameters.DeviceIoControl.OutputBufferLength должен иметь значение по крайней мере sizeof(ULONG) для получения идентификатора полосы. Если возврат идентификатора полосы не требуется, задайте для параметра Parameters.DeviceIoControl.OutputBufferLength значение 0.
Блок состояния
В поле Состояние можно вернуть одно из следующих значений.
Значение состояния | Описание |
---|---|
STATUS_SUCCESS | Была создана новая группа. |
STATUS_INVALID_DEVICE_REQUEST | Запоминающее устройство не поддерживает управление полосами. |
STATUS_INVALID_BUFFER_SIZE | Недопустимый размер входного буфера. |
STATUS_INVALID_PARAMETER | Недопустимые сведения во входном буфере. |
STATUS_CONFLICTING_ADDRESSES | Группа не была создана из-за перекрывающихся расположений. |
STATUS_INSUFFICIENT_RESOURCES | Группа не была создана, так как таблица группы уже заполнена. |
STATUS_IO_DEVICE_ERROR | Сбой связи. Устройство хранения может быть несовместимо с протоколами безопасности. |
Комментарии
Назначение ключа проверки подлинности только что созданному диапазону является необязательным. Если ключ не указан, где AuthKeyOffset = EHSTOR_BANDMGR_NO_KEY в структуре CREATE_BAND_PARAMETERS , используется ключ проверки подлинности по умолчанию. Тем не менее, группа остается уязвимой для другого абонента, который может взять на себя контроль над группой сразу после ее создания, изменив свой ключ проверки подлинности. Во время создания рекомендуется назначить диапазону ключ проверки подлинности, отличный от ключа проверки подлинности по умолчанию.
Изменения, внесенные в таблицу диапазонов этим запросом, фиксируются на устройстве атомарно до завершения запроса IOCTL. Таким образом, гарантируется, что полоса будет создана со всеми свойствами, заданными или не создается вообще, если произойдет сбой системы или питания.
Расположение нового диапазона не должно перекрываться с существующим диапазоном, иначе запрос завершится ошибкой при STATUS_CONFLICTING_ADDRESSES.
Если группа разблокирована, для элементов ReadLock или WriteLockBAND_SECURITY_INFO установлено значение FALSE, а CREATEBAND_AUTHKEY_CACHING_ENABLED задано в элементе FlagsCREATE_BAND_PARAMETERS, кэширование учетных данных включено. Драйвер хранилища проверки подлинности будет кэшировать ключ проверки подлинности в памяти. Это позволяет драйверу silo автоматически проверять подлинность доступа узла к устройству хранения данных при необходимости обслуживания тома, например при изменении размера полосы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно, начиная с Windows 8 |
Верхняя часть | ehstorbandmgmt.h (включая EhStorBandMgmt.h) |