структура SCSI_POWER_REQUEST_BLOCK (storport.h)

Структура SCSI_POWER_REQUEST_BLOCK — это специальная версия SCSI_REQUEST_BLOCK , которая используется для запросов на управление питанием.

Примечание

Модели драйверов портов SCSI и драйверов мини-портов SCSI могут быть изменены или недоступны в будущем. Вместо этого рекомендуется использовать модели драйверов Storport и драйверов для мини-портов Storport .

Синтаксис

typedef struct _SCSI_POWER_REQUEST_BLOCK {
  USHORT                     Length;
  UCHAR                      Function;
  UCHAR                      SrbStatus;
  UCHAR                      SrbPowerFlags;
  UCHAR                      PathId;
  UCHAR                      TargetId;
  UCHAR                      Lun;
  STOR_DEVICE_POWER_STATE    DevicePowerState;
  ULONG                      SrbFlags;
  ULONG                      DataTransferLength;
  ULONG                      TimeOutValue;
  PVOID                      DataBuffer;
  PVOID                      SenseInfoBuffer;
  struct _SCSI_REQUEST_BLOCK *NextSrb;
  PVOID                      OriginalRequest;
  PVOID                      SrbExtension;
  STOR_POWER_ACTION          PowerAction;
  ULONG                      Reserved;
  UCHAR                      Reserved5[16];
} SCSI_POWER_REQUEST_BLOCK, *PSCSI_POWER_REQUEST_BLOCK;

Члены

Length

Размер структуры SCSI_POWER_REQUEST_BLOCK в байтах.

Function

Выполняемая операция. Для структуры SCSI_POWER_REQUEST_BLOCK этому элементу всегда присваивается значение SRB_FUNCTION_POWER.

SrbStatus

Состояние завершенного запроса. Этот элемент должен быть задан драйвером мини-порта, прежде чем он уведомит драйвер Storport о завершении запроса. Драйвер мини-порта уведомляет драйвер Storport о завершении запроса, вызывая функцию StorPortNotification с типом уведомления RequestComplete .

Список возможных значений для этого элемента см. в SCSI_REQUEST_BLOCK документации по WDK.

SrbPowerFlags

Флаги управления питанием. В настоящее время единственным допустимым флагом является SRB_POWER_FLAGS_ADAPTER_REQUEST, который указывает, что запрос на управление питанием предназначен для адаптера. Если этот флаг установлен, драйвер мини-порта должен игнорировать значения в PathId, TargetId и Lun.

PathId

Идентификатор порта SCSI или шины для запроса. Это значение отсчитывается от нуля.

TargetId

Целевой контроллер или идентификатор устройства в шине.

Lun

Номер логической единицы (LUN) устройства.

DevicePowerState

Значение перечислителя типа STOR_DEVICE_POWER_STATE , указывающее запрошенное состояние питания устройства.

SrbFlags

Драйвер мини-порта должен игнорировать этот элемент.

DataTransferLength

Драйвер мини-порта должен игнорировать этот элемент.

TimeOutValue

Интервал выполнения запроса (в секундах) до того, как драйвер Storport определит, что истекло время ожидания запроса.

DataBuffer

Драйвер мини-порта должен игнорировать этот элемент.

SenseInfoBuffer

Драйвер мини-порта должен игнорировать этот элемент.

NextSrb

Драйвер мини-порта должен игнорировать этот элемент.

OriginalRequest

Драйвер мини-порта должен игнорировать этот элемент.

SrbExtension

Указатель на расширение SRB. Драйвер мини-порта не должен использовать этот член, если в структуре HW_INITIALIZATION_DATA для SrbExtensionSize задано значение 0. Драйвер Storport не инициализирует память, на которую указывает этот элемент. HBA может напрямую получать доступ к данным, которые драйвер мини-порта записывает в расширение SRB. Драйвер мини-порта может получить физический адрес расширения SRB, вызвав подпрограмму StorPortGetPhysicalAddress .

PowerAction

Значение перечислителя типа STOR_POWER_ACTION , указывающее тип завершения работы системы, которое ожидается. Это значение имеет смысл, только если устройство переходит в состояние питания D1, D2 или D3, как указано элементом DevicePowerState .

Reserved

Зарезервировано для системного использования.

Reserved5[16]

Зарезервировано для системного использования.

Комментарии

Драйвер Storport вызывает HwStorBuildIo , чтобы передать SРБ драйверу мини-порта. HwStorBuildIo должен проверка член функции SRB, чтобы определить тип SRB. Если для элемента Function задано значение SRB_FUNCTION_POWER, SRB представляет собой структуру типа SCSI_POWER_REQUEST_BLOCK.

Драйвер Storport отправляет SCSI_POWER_REQUEST_BLOCK запросы драйверу мини-порта, чтобы уведомить его о событиях питания Windows, влияющих на устройства хранения данных, подключенные к адаптеру. В случае события включения этот запрос дает драйверу мини-порта возможность инициализировать себя. В случае события гибернации или завершения работы этот запрос дает драйверу мини-порта возможность выполнить запросы ввода-вывода и подготовиться к отключению питания. Драйвер мини-порта может использовать значение в элементе PowerActionSCSI_POWER_REQUEST_BLOCK , чтобы определить, какие действия требуются. После того как драйвер мини-порта завершит запрос SCSI_POWER_REQUEST_BLOCK , драйвер Storport вызывает HwScsiAdapterControl с запросом управления ScsiStopAdapter для выключения адаптера. Драйвер мини-порта повторно инициализируется во время обработки запроса SRB_FUNCTION_POWER или может подождать и повторно инициализировать, когда драйвер Storport вызывает HwStorAdapterControl для выполнения запроса элемента управления ScsiRestartAdapter .

При переходе из состояния питания D0 в более низкое (D1, D2 или D3) драйвер Storport отправляет драйверу мини-порта запрос SCSI_POWER_REQUEST_BLOCK , прежде чем базовый драйвер шины выключит адаптер.

Чтобы драйвер Storport отправлял SCSI_POWER_REQUEST_BLOCK запрос драйверу мини-порта, должны существовать следующие условия:

  • Адаптер не остановлен.
  • Очередь ввода-вывода для адаптера приостановлена.
  • Оборудование адаптера выключено.
  • Мини-порт может получить доступ к аппаратным ресурсам адаптера.

Требования

Требование Значение
Заголовок storport.h (включая Storport.h, Minitape.h, Srb.h)

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

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification