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


функция обратного вызова HW_UNIT_CONTROL (storport.h)

Подпрограмма HwStorUnitControl драйвера мини-порта вызывается для выполнения синхронных операций для управления состоянием устройства запоминающего устройства.

Синтаксис

HW_UNIT_CONTROL HwUnitControl;

SCSI_UNIT_CONTROL_STATUS HwUnitControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_UNIT_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

Параметры

[in] DeviceExtension

Указатель на единичное место хранения драйвера мини-порта.

[in] ControlType

Значение SCSI_UNIT_CONTROL_TYPE , указывающее операцию управления единицей, где каждый тип элемента управления инициирует действие драйвера мини-порта. Дополнительные сведения см. в разделе SCSI_UNIT_CONTROL_TYPE .

[in] Parameters

Указатель на структуру или значение, содержащее сведения, связанные с ControlType. Все структуры выделяются вызывающим объектом. Дополнительные сведения см. в разделе SCSI_UNIT_CONTROL_TYPE .

Адрес

Адрес единицы, для который указана операция управления.

Возвращаемое значение

В зависимости от типа элемента управления HwStorUnitControl возвращает одно из следующих SCSI_UNIT_CONTROL_STATUS значений:

Код возврата Описание
ScsiUnitControlSuccess Драйвер мини-порта успешно завершил запрошенную операцию.
ScsiUnitControlUnsuccessful Операция управления единицей не была успешной.

Комментарии

Storport вызывает HwStorUnitControl мини-порта с типом элемента управления ScsiQuerySupportedControlTypes после инициализации адаптера безопасности, но до первого ввода-вывода. Драйвер мини-порта заполняет структуру SCSI_SUPPORTED_CONTROL_TYPE_LIST в разделе Параметры поддерживаемыми операциями. После возврата HwStorUnitControl из этого вызова драйвер Storport вызывает обратный вызов HwStorAdapterControl драйвера мини-порта только для операций, поддерживаемых мини-портом.

Storport вызывает HwStorUnitControl, чтобы уведомить драйвер мини-порта об изменении устройства единицы, определенного по адресу, или о том, что мини-порт должен выполнить запрос или операцию установки для этого устройства, например, запустить устройство или об обработке операции управления питанием для единицы.

В следующей таблице перечислены текущие irQL и спин-блокировка, полученные при выдаче типа элемента управления.

Тип элемента управления IRQL Спин-блокировка
ScsiQuerySupportedControlTypes PASSIVE_LEVEL None
ScsiUnitUsage PASSIVE_LEVEL None
ScsiUnitStart PASSIVE_LEVEL None
ScsiUnitPower DISPATCH_LEVEL None
ScsiUnitPoFxPowerInfo PASSIVE_LEVEL None
ScsiUnitPoFxPowerRequired DISPATCH_LEVEL None
ScsiUnitPoFxPowerActive DISPATCH_LEVEL None
ScsiUnitPoFxPowerSetFState DISPATCH_LEVEL None
ScsiUnitPoFxPowerControl DISPATCH_LEVEL None
ScsiUnitRemove PASSIVE_LEVEL None
ScsiUnitSurpriseRemoval PASSIVE_LEVEL None
ScsiUnitRichDescription PASSIVE_LEVEL None
ScsiUnitQueryBusType PASSIVE_LEVEL None
ScsiUnitQueryFruId PASSIVE_LEVEL None

Имя HwStorUnitControl — это просто заполнитель. Фактический прототип этой подпрограммы определен в storport.h следующим образом:

typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_UNIT_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

Требования

Требование Значение
Минимальная версия клиента Windows 8
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
IRQL См. заметки.

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

HwStorAdapterControl

SCSI_SUPPORTED_CONTROL_TYPE_LIST

SCSI_UNIT_CONTROL_TYPE