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

Подпрограмма HwStorAdapterControl драйвера мини-порта вызывается для выполнения синхронных операций для управления состоянием или поведением адаптера, например остановки или перезапуска адаптера шины узла (HBA) для управления питанием.

Синтаксис

HW_ADAPTER_CONTROL HwAdapterControl;

SCSI_ADAPTER_CONTROL_STATUS HwAdapterControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_ADAPTER_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

Параметры

[in] DeviceExtension

Указатель на область хранения мини-порта для каждого HBA.

[in] ControlType

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

[in] Parameters

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

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

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

Код возврата Описание
ScsiAdapterControlSuccess Минипорт-драйвер успешно выполнил запрошенную операцию. В настоящее время HwStorAdapterControl должен возвращать это значение для всех типов элементов управления.
ScsiAdapterControlUnsuccessful Операция управления адаптером не прошла успешно.

Комментарии

HwStorAdapterControl является обязательной функцией.

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

Так как минипорт-драйверы, работающие с драйвером Storport, должны поддерживать Plug and Play (PnP), мини-порты должны поддерживать типы элементов управления ScsiStopAdapter и ScsiRestartAdapter.

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

Тип элемента управления IRQL Спин-блокировка
ScsiQuerySupportedControlTypes PASSIVE_LEVEL Нет
ScsiStopAdapter DIRQL Прерывание блокировки
ScsiRestartAdapter DIRQL Прерывание блокировки
ScsiSetBootConfig PASSIVE_LEVEL Нет
ScsiSetRunningConfig PASSIVE_LEVEL Нет
ScsiPowerSettingNotification PASSIVE_LEVEL Нет
ScsiAdapterPower <= DISPATCH_LEVEL Нет
ScsiAdapterPoFxPowerRequired <= DISPATCH_LEVEL Нет
ScsiAdapterPoFxPowerActive <= DISPATCH_LEVEL Нет
ScsiAdapterPoFxPowerSetFState <= DISPATCH_LEVEL Нет
ScsiAdapterPoFxPowerControl <= DISPATCH_LEVEL Нет
ScsiAdapterPrepareForBusReScan PASSIVE_LEVEL Нет
ScsiAdapterSystemPowerHints PASSIVE_LEVEL Нет
ScsiAdapterFilterResourceRequirements < DISPATCH_LEVEL Нет
ScsiAdapterPoFxMaxOperationalPower PASSIVE_LEVEL Нет
ScsiAdapterPoFxSetPerfState <= DISPATCH_LEVEL Нет
ScsiAdapterSurpriseRemoval < DISPATCH_LEVEL Нет
ScsiAdapterSerialNumber < DISPATCH_LEVEL Нет
ScsiAdapterCryptoOperation PASSIVE_LEVEL Нет
ScsiAdapterQueryFruId PASSIVE_LEVEL Нет
ScsiAdapterSetEventLogging PASSIVE_LEVEL Нет

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

typedef
SCSI_ADAPTER_CONTROL_STATUS
HW_ADAPTER_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

Примеры

Чтобы определить функцию обратного вызова HwStorAdapterControl , необходимо сначала указать объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с использованием типов функций обратного вызова помогает анализу кода для драйверов, средства проверки статических драйверов (SDV) и других средств проверки найти ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить подпрограмму обратного вызова HwStorAdapterControl с именем MyHwAdapterControl, используйте тип HW_ADAPTER_CONTROL , как показано в этом примере кода:

HW_ADAPTER_CONTROL MyHwAdapterControl;

Затем реализуйте подпрограмму обратного вызова следующим образом:

_Use_decl_annotations_
SCSI_ADAPTER_CONTROL_STATUS
MyHwAdapterControl (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );
  {
      ...
  }

Тип функции HW_ADAPTER_CONTROL определен в файле заголовка Storport.h . Чтобы точнее определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции заметку Use_decl_annotations . Заметка Use_decl_annotations гарантирует, что используются заметки, применяемые к типу функции HW_ADAPTER_CONTROL в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе "Объявление функций с использованием типов ролей функций для драйверов Storport". Сведения о Use_decl_annotations см. в разделе "Поведение функции аннотирования".

Требования

   
Минимальная версия клиента Windows 8
Целевая платформа Универсальное
Заголовок storport.h (include Storport.h)
IRQL См. заметки.

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

HwStorFindAdapter

HwStorInitialize

HwStorUnitControl

SCSI_ADAPTER_CONTROL_TYPE

SCSI_SUPPORTED_CONTROL_TYPE_LIST