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


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.

Если для элемента CREATE_BAND_PARAMETERS AuthKeyOffset задано значение 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 должен иметь по крайней мере размер(ULONG), чтобы получить идентификатор полосы. Если возврат идентификатора полосы не требуется, задайте для параметра Parameters.DeviceIoControl.OutputBufferLength значение 0.

Блок состояния

Одно из следующих значений можно вернуть в поле Status.

Значение состояния Описание
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 или записи BAND_SECURITY_INFO задано значение FALSE, а CREATEBAND_AUTHKEY_CACHING_ENABLED установлен в элементе флаговCREATE_BAND_PARAMETERS, а кэширование учетных данных включено. Драйвер silo проверки подлинности кэширует ключ проверки подлинности в памяти. Это позволяет драйверу silo автоматически проходить проверку подлинности доступа узла к устройству хранения, если требуется обслуживание томов, например изменение размера полосы.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8
заголовка ehstorbandmgmt.h (include EhStorBandMgmt.h)

См. также

BAND_LOCATION_INFO

BAND_SECURITY_INFO

CREATE_BAND_PARAMETERS