Partager via


SCSI_POWER_REQUEST_BLOCK structure (storport.h)

La structure SCSI_POWER_REQUEST_BLOCK est une version spéciale d’une SCSI_REQUEST_BLOCK utilisée pour les demandes de gestion de l’alimentation.

Notes

Les modèles de pilote de port SCSI et de pilote miniport SCSI peuvent être modifiés ou indisponibles à l’avenir. Au lieu de cela, nous vous recommandons d’utiliser les modèles de pilote Storport et de pilote miniport Storport .

Syntaxe

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;

Membres

Length

Taille, en octets, de la structure SCSI_POWER_REQUEST_BLOCK .

Function

Opération à exécuter. Pour la structure SCSI_POWER_REQUEST_BLOCK , ce membre est toujours défini sur SRB_FUNCTION_POWER.

SrbStatus

État de la demande terminée. Ce membre doit être défini par le pilote miniport avant qu’il informe le pilote Storport que la demande est terminée. Un pilote miniport informe le pilote Storport que la demande est terminée en appelant la fonction StorPortNotification avec le type de notification RequestComplete .

Consultez SCSI_REQUEST_BLOCK dans la documentation WDK pour obtenir la liste des valeurs possibles pour ce membre.

SrbPowerFlags

Indicateurs de gestion de l’alimentation. Actuellement, le seul indicateur autorisé est SRB_POWER_FLAGS_ADAPTER_REQUEST, ce qui indique que la demande de gestion de l’alimentation concerne l’adaptateur. Si cet indicateur est défini, le pilote miniport doit ignorer les valeurs dans PathId, TargetId et Lun.

PathId

Identificateur de bus ou de port SCSI pour la demande. Cette valeur est basée sur zéro.

TargetId

Le contrôleur cible ou l’identificateur d’appareil sur le bus.

Lun

Numéro d’unité logique (LUN) de l’appareil.

DevicePowerState

Valeur d’énumérateur de type STOR_DEVICE_POWER_STATE qui spécifie l’état d’alimentation demandé de l’appareil.

SrbFlags

Le pilote Miniport doit ignorer ce membre.

DataTransferLength

Le pilote Miniport doit ignorer ce membre.

TimeOutValue

Intervalle, en secondes, pendant lequel la demande peut s’exécuter avant que le pilote Storport détermine que la requête a expiré.

DataBuffer

Le pilote Miniport doit ignorer ce membre.

SenseInfoBuffer

Le pilote Miniport doit ignorer ce membre.

NextSrb

Le pilote Miniport doit ignorer ce membre.

OriginalRequest

Le pilote Miniport doit ignorer ce membre.

SrbExtension

Pointeur vers l’extension SRB. Un pilote miniport ne doit pas utiliser ce membre s’il a défini SrbExtensionSize sur zéro dans la structure HW_INITIALIZATION_DATA . Le pilote Storport n’initialise pas la mémoire vers laquelle pointe ce membre. L’adaptateur HBA peut accéder directement aux données que le pilote miniport écrit dans l’extension SRB. Un pilote miniport peut obtenir l’adresse physique de l’extension SRB en appelant la routine StorPortGetPhysicalAddress .

PowerAction

Valeur d’énumérateur de type STOR_POWER_ACTION qui spécifie le type d’arrêt du système sur le point de se produire. Cette valeur est significative uniquement si l’appareil passe à l’état d’alimentation D1, D2 ou D3, comme indiqué par le membre DevicePowerState .

Reserved

Réservé pour le système.

Reserved5[16]

Réservé pour le système.

Remarques

Le pilote Storport appelle HwStorBuildIo pour passer des SRM au pilote miniport. HwStorBuildIo doit vérifier le membre Function du SRB pour déterminer le type du SRB. Si le membre Function est défini sur SRB_FUNCTION_POWER, le SRB est une structure de type SCSI_POWER_REQUEST_BLOCK.

Le pilote Storport envoie SCSI_POWER_REQUEST_BLOCK demandes à un pilote miniport pour informer le pilote miniport des événements d’alimentation Windows qui affectent les périphériques de stockage connectés à l’adaptateur. Dans le cas d’un événement de mise sous tension, cette demande permet au pilote miniport de s’initialiser. Dans le cas d’un événement de mise en veille prolongée ou d’arrêt, cette demande permet au pilote miniport de terminer les demandes d’E/S et de se préparer à une mise hors tension. Le pilote miniport peut utiliser la valeur dans le membre PowerAction du SCSI_POWER_REQUEST_BLOCK pour déterminer les actions requises. Une fois que le pilote miniport a terminé la demande de SCSI_POWER_REQUEST_BLOCK , le pilote Storport appelle HwScsiAdapterControl avec une demande de contrôle ScsiStopAdapter pour mettre hors tension l’adaptateur. Le pilote miniport se réinitialise lors du traitement de la requête SRB_FUNCTION_POWER, ou il peut attendre et réinitialiser quand le pilote Storport appelle HwStorAdapterControl pour effectuer une demande de contrôle ScsiRestartAdapter .

Lors de la transition de l’état d’alimentation D0 vers un état de faible puissance (D1, D2 ou D3), le pilote Storport envoie une demande de SCSI_POWER_REQUEST_BLOCK au pilote miniport avant que le pilote de bus sous-jacent n’éteigne l’adaptateur.

Les conditions suivantes doivent exister avant que le pilote Storport envoie une demande de SCSI_POWER_REQUEST_BLOCK au pilote miniport :

  • L’adaptateur n’est pas arrêté.
  • La file d’attente d’E/S de l’adaptateur est suspendue.
  • Le matériel de l’adaptateur est mis sous tension.
  • Le miniport peut accéder aux ressources matérielles de l’adaptateur.

Configuration requise

Condition requise Valeur
En-tête storport.h (inclure Storport.h, Minitape.h, Srb.h)

Voir aussi

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification