Partager via


Fonction ScsiPortWmiDispatchFunction (scsiwmi.h)

La routine ScsiPortWmiDispatchFunction est une routine de répartition pour les pilotes miniport qui prennent en charge 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

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)

Voir aussi

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess