Partager via


SCSI_WMI_REQUEST_BLOCK structure (srb.h)

Cette structure est une version spéciale d’un SCSI_REQUEST_BLOCK à utiliser avec des commandes WMI.

Note 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_WMI_REQUEST_BLOCK {
  USHORT Length;
  UCHAR  Function;
  UCHAR  SrbStatus;
  UCHAR  WMISubFunction;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  Reserved1;
  UCHAR  WMIFlags;
  UCHAR  Reserved2[2];
  ULONG  SrbFlags;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  PVOID  DataPath;
  PVOID  Reserved3;
  PVOID  OriginalRequest;
  PVOID  SrbExtension;
  ULONG  Reserved4;
  ULONG  Reserved6;
  UCHAR  Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;

Membres

Length

Spécifie la taille en octets de cette structure.

Function

SRB_FUNCTION_WMI, qui spécifie que la demande est une requête WMI. Si ce membre n’est pas défini sur SRB_FUNCTION_WMI, le pilote miniport doit échouer la demande.

SrbStatus

Retourne la status de la demande terminée. Ce membre doit être défini par le pilote miniport avant qu’il informe le pilote spécifique au système d’exploitation que la demande est terminée en appelant ScsiPortNotification avec RequestComplete. La valeur de ce membre peut être n’importe quelle valeur répertoriée pour SrbStatus dans SCSI_REQUEST_BLOCK.

WMISubFunction

Indique l’action WMI à effectuer. Un pilote miniport appelle ScsiPortWmiDispatchFunction avec MinorFunction défini sur cette valeur. La valeur de la sous-fonction correspond au numéro IRP secondaire WMI qui identifie l’opération WMI.

PathId

Indique le port ou le bus SCSI pour la requête. Cette valeur est de base zéro. Si SRB_WMI_FLAGS_ADAPTER_REQUEST est défini dans WMIFlags, ce membre est réservé.

TargetId

Indique le contrôleur ou l’appareil cible sur le bus. Si SRB_WMI_FLAGS_ADAPTER_REQUEST est défini dans WMIFlags, ce membre est réservé.

Lun

Indique le numéro d’unité logique de l’appareil. Si SRB_WMI_FLAGS_ADAPTER_REQUEST est défini dans WMIFlags, ce membre est réservé.

Reserved1

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport.

WMIFlags

Indique que la requête WMI concerne l’adaptateur si SRB_WMI_FLAGS_ADAPTER_REQUEST est défini et que PathId, TargetId et Lun sont réservés. Sinon, WMIFlags aura la valeur NULL, ce qui indique que la requête concerne l’appareil spécifié par PathId, TargetId et Lun.

Reserved2[2]

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport.

SrbFlags

Indique différents paramètres et options concernant la requête. SrbFlags est en lecture seule. Ce membre sera défini sur un ou plusieurs des indicateurs ORed suivants :

SRB_FLAGS_DATA_IN

Indique que les données seront transférées de l’appareil vers le système.

SRB_FLAGS_DATA_OUT

Indique que les données seront transférées du système vers l’appareil.

SRB_FLAGS_NO_DATA_TRANSFER

Indique qu’aucun transfert de données n’est effectué avec cette demande. Si cette option est définie, les indicateurs SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN et SRB_FLAGS_UNSPECIFIED_DIRECTION sont clairs.

SRB_FLAGS_DISABLE_SYNCH_TRANSFER

Indique que l’adaptateur HBA, si possible, doit effectuer des E/S asynchrones pour cette demande de transfert. Si les E/S synchrones ont été négociées précédemment, l’adaptateur HBA doit renégocier pour les E/S asynchrones avant d’effectuer le transfert.

SRB_FLAGS_DISABLE_DISCONNECT

Indique que l’adaptateur HBA ne doit pas autoriser la cible à se déconnecter du bus SCSI pendant le traitement de cette requête.

DataTransferLength

Indique la taille en octets de la mémoire tampon de données. Un pilote miniport appelle ScsiPortWmiDispatchFunction avec BufferSize défini sur cette valeur. Si une sous-exécution se produit, le pilote miniport doit mettre à jour ce membre en fonction du nombre d’octets réellement transférés.

TimeOutValue

Indique l’intervalle en secondes pendant lequel la requête peut s’exécuter avant que le pilote de port spécifique au système d’exploitation puisse considérer qu’elle a expiré. Les pilotes miniport ne sont pas tenus de chronomètrer les demandes, car le pilote de port le fait déjà.

DataBuffer

Pointe vers la mémoire tampon de données. Un pilote miniport appelle ScsiPortWmiDispatchFunction avec Buffer défini sur cette valeur. Les pilotes Miniport peuvent utiliser cette valeur comme pointeur de données, quelle que soit la valeur de MapBuffers dans le PORT_CONFIGURATION_INFORMATION pour l’adaptateur HBA. Un pilote miniport ne peut pas transférer des données directement dans la mémoire tampon à l’aide de DMA.

DataPath

Spécifie le chemin des données WMI pour cette requête. Un pilote miniport appelle ScsiPortWmiDispatchFunction avec DataPath défini sur cette valeur.

Reserved3

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport.

OriginalRequest

Pointe vers l’IRP pour cette demande. Ce membre n’est pas pertinent pour les pilotes de miniport.

SrbExtension

Pointe vers l’extension Srb. Un pilote miniport ne doit pas utiliser ce membre s’il a défini SrbExtensionSize sur zéro dans le HW_INITIALIZATION_DATA. La mémoire sur SrbExtension n’est pas initialisée par le pilote de port spécifique au système d’exploitation, et les données déterminées par le pilote miniport sont accessibles directement par l’adaptateur HBA. L’adresse physique correspondante peut être obtenue en appelant ScsiPortGetPhysicalAddress avec le pointeur SrbExtension .

Reserved4

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport.

Reserved6

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport. Ce membre est valide à compter de Windows Server 2003 avec SP1.

Reserved5[16]

Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes de miniport.

Remarques

Les pilotes de filtre et de classe de stockage Windows NT peuvent envoyer des SDR WMI au pilote de port système. Le pilote de port système gère certaines requêtes WMI pour le compte des pilotes miniport. Si le pilote de port ne peut pas gérer une requête WMI, il la transfère au pilote miniport.

Un pilote miniport reçoit des requêtes WMI du pilote de port uniquement si le pilote miniport a défini WmiDataProvider dans la structure PORT_CONFIGURATION_INFORMATION. Si le pilote miniport prend en charge une requête, il doit la traiter et la terminer en appelant deux fois ScsiPortNotification , d’abord avec RequestComplete , puis avec NextRequest (ou NextLuRequest).

Pour plus d’informations sur la prise en charge de WMI dans les pilotes miniport, consultez Windows Management Instrumentation.

Configuration requise

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

Voir aussi

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction