estructura de SCSI_POWER_REQUEST_BLOCK (storport.h)

La estructura SCSI_POWER_REQUEST_BLOCK es una versión especial de un SCSI_REQUEST_BLOCK que se usa para las solicitudes de administración de energía.

Nota

Los modelos del controlador de puerto SCSI y del controlador de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar el controlador Storport y los modelos de controlador de miniport storport .

Sintaxis

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;

Miembros

Length

Tamaño, en bytes, de la estructura SCSI_POWER_REQUEST_BLOCK .

Function

Operación que se va a realizar. Para la estructura SCSI_POWER_REQUEST_BLOCK , este miembro siempre se establece en SRB_FUNCTION_POWER.

SrbStatus

Estado de la solicitud completada. El controlador de miniporte debe establecer este miembro antes de que notifique al controlador storport que la solicitud se ha completado. Un controlador de miniport notifica al controlador storport que la solicitud se ha completado llamando a la función StorPortNotification con el tipo de notificación RequestComplete .

Consulte SCSI_REQUEST_BLOCK en la documentación de WDK para obtener una lista de los valores posibles para este miembro.

SrbPowerFlags

Marcas de administración de energía. Actualmente, la única marca permitida es SRB_POWER_FLAGS_ADAPTER_REQUEST, lo que indica que la solicitud de administración de energía es para el adaptador. Si se establece esta marca, el controlador de minipuerto debe omitir los valores de PathId, TargetId y Lun.

PathId

El puerto SCSI o el identificador de bus de la solicitud. Este valor es de base cero.

TargetId

Controlador de destino o identificador de dispositivo en el bus.

Lun

Número de unidad lógica (LUN) del dispositivo.

DevicePowerState

Valor de enumerador de tipo STOR_DEVICE_POWER_STATE que especifica el estado de alimentación solicitado del dispositivo.

SrbFlags

El controlador miniport debe ignorar este miembro.

DataTransferLength

El controlador miniport debe ignorar este miembro.

TimeOutValue

El intervalo, en segundos, que la solicitud puede ejecutarse antes de que el controlador storport determine que la solicitud ha agotado el tiempo de espera.

DataBuffer

El controlador miniport debe ignorar este miembro.

SenseInfoBuffer

El controlador miniport debe ignorar este miembro.

NextSrb

El controlador miniport debe ignorar este miembro.

OriginalRequest

El controlador miniport debe ignorar este miembro.

SrbExtension

Puntero a la extensión SRB. Un controlador de minipuerto no debe usar este miembro si establece SrbExtensionSize en cero en la estructura HW_INITIALIZATION_DATA . El controlador storport no inicializa la memoria a la que apunta este miembro. El HBA puede acceder directamente a los datos que escribe el controlador de miniporte en la extensión SRB. Un controlador de minipuerto puede obtener la dirección física de la extensión SRB llamando a la rutina StorPortGetPhysicalAddress .

PowerAction

Valor de enumerador de tipo STOR_POWER_ACTION que especifica el tipo de apagado del sistema que está a punto de producirse. Este valor solo es significativo si el dispositivo se mueve al estado de alimentación D1, D2 o D3, como se indica en el miembro DevicePowerState .

Reserved

Reservado para uso del sistema.

Reserved5[16]

Reservado para uso del sistema.

Comentarios

El controlador storport llama a HwStorBuildIo para pasar SRB al controlador de miniporte. HwStorBuildIo debe comprobar el miembro Function del SRB para determinar el tipo de SRB. Si el miembro Function se establece en SRB_FUNCTION_POWER, el SRB es una estructura de tipo SCSI_POWER_REQUEST_BLOCK.

El controlador storport envía SCSI_POWER_REQUEST_BLOCK solicitudes a un controlador de minipuerto para notificar al controlador de miniporte los eventos de energía de Windows que afectan a los dispositivos de almacenamiento que están conectados al adaptador. En el caso de un evento de encendido, esta solicitud ofrece al controlador de minipuerto una oportunidad para inicializarse. En el caso de un evento de hibernación o apagado, esta solicitud ofrece al controlador de minipuerto una oportunidad para completar las solicitudes de E/S y prepararse para un apagado. El controlador de minipuerto puede usar el valor del miembro PowerAction del SCSI_POWER_REQUEST_BLOCK para determinar qué acciones son necesarias. Una vez completado el controlador de miniporte la solicitud de SCSI_POWER_REQUEST_BLOCK , el controlador storport llama a HwScsiAdapterControl con una solicitud de control de ScsiStopAdapter para apagar el adaptador. El controlador de miniporte reinicializa mientras procesa la solicitud de SRB_FUNCTION_POWER, o puede esperar y reinicializar cuando el controlador storport llama a HwStorAdapterControl para realizar una solicitud de control ScsiRestartAdapter .

Al pasar del estado de alimentación D0 a un estado de baja potencia (D1, D2 o D3), el controlador Storport envía una solicitud de SCSI_POWER_REQUEST_BLOCK al controlador de miniporte antes de que el controlador de bus subyacente apague el adaptador.

Las condiciones siguientes deben existir antes de que el controlador storport envíe una solicitud de SCSI_POWER_REQUEST_BLOCK al controlador de miniporte:

  • El adaptador no está detenido.
  • La cola de E/S del adaptador está en pausa.
  • El hardware del adaptador está encendido.
  • El minipuerto puede acceder a los recursos de hardware del adaptador.

Requisitos

Requisito Valor
Header storport.h (incluya Storport.h, Minitape.h, Srb.h)

Consulte también

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification