Partager via


structure SCSI_POWER_REQUEST_BLOCK (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

Status de la demande terminée. Ce membre doit être défini par le pilote miniport avant d’informer le pilote Storport que la demande est terminée. Un pilote miniport avertit 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

Contrôleur cible ou identificateur d’appareil sur le bus.

Lun

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

DevicePowerState

Valeur énumératrice 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, que la demande peut 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 ce membre pointe. 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 énumératrice 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 case activée 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 donne au pilote miniport l’occasion de s’initialiser. Dans le cas d’un événement de mise en veille prolongée ou d’arrêt, cette demande donne au pilote miniport la possibilité de remplir les demandes d’E/S et de se préparer à une mise hors tension. Le pilote miniport peut utiliser la valeur du 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 de ScsiStopAdapter pour mettre hors tension l’adaptateur. Le pilote miniport réinitialise lors du traitement de la demande de SRB_FUNCTION_POWER, ou il peut attendre et réinitialiser lorsque le pilote Storport appelle HwStorAdapterControl pour effectuer une demande de contrôle ScsiRestartAdapter .

Lors de la transition de l’état d’alimentation D0 à un état sous-alimenté (D1, D2 ou D3), le pilote Storport envoie une requête SCSI_POWER_REQUEST_BLOCK au pilote miniport avant que le pilote de bus sous-jacent ne met en panne l’adaptateur.

Les conditions suivantes doivent exister avant que le pilote Storport envoie une requête 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