Поделиться через


IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)

Новые полосы создаются на устройстве хранения, управляемом полосой, с помощью запроса IOCTL_EHSTOR_BANDMGMT_CREATE_BAND . В таблицу записей группы добавляется новая полоса, которая включает в себя расположение и свойства безопасности полосы.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Буфер в 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)

См. также раздел

BAND_LOCATION_INFO

BAND_SECURITY_INFO

CREATE_BAND_PARAMETERS