Funzione ScsiPortWmiDispatchFunction (scsiwmi.h)
La routine ScsiPortWmiDispatchFunction è una routine dispatch per i driver miniport che supportano WMI.
Sintassi
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
);
Parametri
[in] WmiLibInfo
Puntatore a una struttura SCSI_WMILIB_CONTEXT che contiene informazioni di registrazione per i blocchi di dati e i blocchi eventi di un driver miniport e definisce i punti di ingresso per le routine di callback della libreria WMI del driver miniport.
[in] MinorFunction
Indica l'azione WMI da eseguire. Il driver miniport imposta MinorFunction su Srb->WmiSubFunction dall'SRB di input.
[in] DeviceContext
Puntatore a un valore di contesto definito dal driver miniport. Il driver della porta passerà DeviceContext alla routine di callback del driver miniport HwScsiWmi Xxx. Questo valore in genere punta a una struttura HW_DEVICE_EXTENSION.
[in] RequestContext
Puntatore a una struttura SCSIWMI_REQUEST_CONTEXT che contiene informazioni di contesto per WMI SRB. Se SRB può eseguire la penna, il driver miniport deve allocare questa struttura dall'estensione SRB perché il contesto della richiesta deve rimanere valido fino a quando ScsiPortWmiPostProcess restituisce con lo stato restituito ERB finale e le dimensioni del buffer. ScsiPortWmiDispatchFunction passerà RequestContext alla routine di callback del driver miniport che elabora questa richiesta.
[in] DataPath
Puntatore a un GUID che rappresenta il blocco di dati associato alla richiesta. Il driver miniport imposta DataPath su Srb->DataPath dall'SRB di input.
[in] BufferSize
Specifica le dimensioni in byte del buffer di dati. Il driver miniport imposta BufferSize su Srb->DataTransferLength dall'SRB di input.
[in] Buffer
Puntatore al buffer di dati. Il driver miniport imposta Buffer su Srb->DataBuffer dall'SRB di input.
Valore restituito
ScsiPortWmiDispatchFunction restituisce TRUE se la richiesta è in sospeso o false se la richiesta è stata completata.
Osservazioni
Quando un driver miniport riceve un SRB in cui il membro funzione è impostato su SRB_FUNCTION_WMI, chiama ScsiPortWmiDispatchFunction con parametri di richiesta, incluso un puntatore a una struttura di SCSI_WMILIB_CONTEXT inizializzata. Questa struttura contiene informazioni sui blocchi di dati e sui blocchi di eventi del driver miniport e definisce i punti di ingresso per le routine di callback HwScsiWmiXxx del driver miniport.
ScsiPortWmiDispatchFunction conferma che SRB è una richiesta WMI e determina se il blocco specificato dalla richiesta è valido per il driver miniport. Se queste condizioni vengono soddisfatte, ScsiPortWmiDispatchFunction elabora SRB chiamando il HwScsiWmiXxx appropriato punto di ingresso nella struttura SCSI_WMILIB_CONTEXT del driver miniport. Se il driver miniport non definisce un punto di ingresso per un facoltativo HwScsiWmiXxx routine, il driver della porta gestisce la richiesta.
In entrambi i casi, dopo che ScsiPortWmiDispatchFunction restituisce, il driver miniport deve eseguire le operazioni seguenti per le richieste che non esegue la penna:
- Impostare Srb->DataTransferLength sul valore restituito da ScsiPortWmiGetReturnSize
- Impostare Srb-> SrbStatus sul valore restituito da ScsiPortWmiGetReturnStatus
- Chiamare ScsiPortNotification con RequestComplete e di nuovo con NextRequest
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | scsiwmi.h (include Miniport.h, Scsi.h) |