structure SCSI_WMI_REQUEST_BLOCK (minitape.h)
Cette structure est une version spéciale d’un SCSI_REQUEST_BLOCK à utiliser avec des commandes WMI.
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 requête 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 l’état 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 requête a terminé 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 sous-fonction correspond au numéro IRP secondaire WMI qui identifie l’opération WMI.
PathId
Indique le port ou le bus SCSI de la requête. Cette valeur est basée sur 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 miniport.
WMIFlags
Indique que la requête WMI concerne l’adaptateur si SRB_WMI_FLAGS_ADAPTER_REQUEST est définie et que PathId, TargetIdet Lun sont réservés. Sinon, WMIFlags sera NULL, indiquant que la demande est pour l’appareil spécifié par PathId, TargetIdet Lun.
Reserved2[2]
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniport.
SrbFlags
Indique différents paramètres et options concernant la requête. SrbFlags est en lecture seule. Ce membre est défini sur un ou plusieurs indicateurs ORed suivants :
SRB_FLAGS_DATA_IN
Indique que les données sont transférées de l’appareil vers le système.
SRB_FLAGS_DATA_OUT
Indique que les données sont transférées du système vers l’appareil.
SRB_FLAGS_NO_DATA_TRANSFER
Indique aucun transfert de données avec cette requête. Si cette valeur 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 l’adaptateur HBA, si possible, doit effectuer des E/S asynchrones pour cette demande de transfert. Si des 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 avec le nombre d’octets réellement transférés.
TimeOutValue
Indique l’intervalle en secondes que la requête peut exécuter avant que le pilote de port spécifique au système d’exploitation puisse envisager d’expirer. Les pilotes Miniport ne sont pas requis pour les demandes de temps, 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 tampon 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 l’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 miniport.
OriginalRequest
Pointe vers l’IRP pour cette demande. Ce membre n’est pas pertinent pour les pilotes miniports.
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 à SrbExtension n’est pas initialisée par le pilote de port spécifique au système d’exploitation, et les données définies 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 miniport.
Reserved6
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniport. Ce membre est valide à partir de Windows Server 2003 avec SP1.
Reserved5[16]
Réservé à l’utilisation du système et non disponible pour une utilisation par les pilotes miniport.
Remarques
Les pilotes de classe de stockage et de filtre Windows NT peuvent envoyer des bases de données SRBS WMI au pilote de port système. Le pilote de port système gère certaines requêtes WMI au nom des pilotes miniport. Si le pilote de port ne peut pas gérer une requête WMI, il transfère la requête au pilote miniport.
Un pilote miniport reçoit des requêtes WMI du pilote de port uniquement si le pilote miniport défini WmiDataProvider dans la structure PORT_CONFIGURATION_INFORMATION. Si le pilote miniport prend en charge une requête, il doit le traiter et terminer la requête en appelant ScsiPortNotification deux fois, tout d’abord avec RequestComplete, puis avec NextRequest (ou NextLuRequest).
Pour plus d’informations sur la prise en charge de WMI dans les pilotes miniports, consultez la Windows Management Instrumentation.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | minitape.h (include Storport.h, Srb.h, Storport.h, Minitape.h) |