Fonction ScsiPortWmiDispatchFunction (scsiwmi.h)
La routine ScsiPortWmiDispatchFunction est une routine de répartition pour les pilotes miniport qui prennent en charge WMI.
Syntaxe
BOOLEAN ScsiPortWmiDispatchFunction(
[in] PSCSI_WMILIB_CONTEXT WmiLibInfo,
[in] UCHAR MinorFunction,
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] PVOID DataPath,
[in] ULONG BufferSize,
[in] PVOID Buffer
);
Paramètres
[in] WmiLibInfo
Pointeur vers une structure de SCSI_WMILIB_CONTEXT qui contient des informations d’inscription pour les blocs de données et les blocs d’événements d’un pilote miniport et définit les points d’entrée pour les routines de rappel de la bibliothèque WMI du pilote miniport.
[in] MinorFunction
Indique l’action WMI à effectuer. Le pilote miniport définit MinorFunction sur Srb-WmiSubFunction> à partir du SRB d’entrée.
[in] DeviceContext
Pointeur vers une valeur de contexte définie par le pilote miniport. Le pilote de port transmet DeviceContext à la routine de rappel HwScsiWmiXxx du pilote miniport. Cette valeur pointe généralement vers une structure HW_DEVICE_EXTENSION.
[in] RequestContext
Pointeur vers une structure SCSIWMI_REQUEST_CONTEXT qui contient des informations de contexte pour le SRB WMI. Si le SRB peut être suspendu, le pilote miniport doit allouer cette structure à partir de l’extension SRB, car le contexte de requête doit rester valide jusqu’à ce que ScsiPortWmiPostProcess soit retourné avec le retour SRB final status et la taille de la mémoire tampon. ScsiPortWmiDispatchFunction transmet RequestContext à la routine de rappel du pilote miniport qui traite cette requête.
[in] DataPath
Pointeur vers un GUID qui représente le bloc de données associé à la requête. Le pilote miniport définit DataPath sur Srb-DataPath> à partir du SRB d’entrée.
[in] BufferSize
Spécifie la taille en octets de la mémoire tampon de données. Le pilote miniport définit BufferSize sur Srb-DataTransferLength> à partir du SRB d’entrée.
[in] Buffer
Pointeur vers le tampon de données. Le pilote miniport définit Buffer sur Srb-DataBuffer> à partir du SRB d’entrée.
Valeur retournée
ScsiPortWmiDispatchFunction retourne TRUE si la requête est en attente, ou FALSE si la demande a été effectuée.
Remarques
Lorsqu’un pilote miniport reçoit un SRB dans lequel le membre Function est défini sur SRB_FUNCTION_WMI, il appelle ScsiPortWmiDispatchFunction avec des paramètres de requête, y compris un pointeur vers une structure SCSI_WMILIB_CONTEXT initialisée. Cette structure contient des informations sur les blocs de données et les blocs d’événements du pilote miniport, et définit des points d’entrée pour les routines de rappel HwScsiWmiXxx du pilote miniport.
ScsiPortWmiDispatchFunction confirme que le SRB est une requête WMI et détermine si le bloc spécifié par la requête est valide pour le pilote miniport. Si ces conditions sont remplies, ScsiPortWmiDispatchFunction traite le SRB en appelant le point d’entrée HwScsiWmiXxx approprié dans la structure de SCSI_WMILIB_CONTEXT du pilote miniport. Si le pilote miniport ne définit pas de point d’entrée pour une routine HwScsiWmiXxx facultative, le pilote de port gère la requête.
Dans les deux cas, après le retour de ScsiPortWmiDispatchFunction , le pilote miniport doit effectuer les opérations suivantes pour les demandes qu’il ne pend pas :
- Définissez Srb->DataTransferLength sur la valeur retournée par ScsiPortWmiGetReturnSize
- Définissez Srb->SrbStatus sur la valeur retournée par ScsiPortWmiGetReturnStatus
- Appelez ScsiPortNotification avec RequestComplete et à nouveau avec NextRequest
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | scsiwmi.h (inclure Miniport.h, Scsi.h) |