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 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'input SRB.
[in] DeviceContext
Puntatore a un valore di contesto definito dal driver miniport. Il driver di porta passerà DeviceContext alla routine di callback HwScsiWmiXxx del driver miniport. 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 finale di restituzione SRB 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'input SRB.
[in] BufferSize
Specifica le dimensioni in byte del buffer di dati. Il driver miniport imposta BufferSize su Srb-DataTransferLength> dall'input SRB.
[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.
Commenti
Quando un driver miniport riceve un SRB in cui il membro Function è 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 punto di ingresso HwScsiWmiXxx appropriato nella struttura di SCSI_WMILIB_CONTEXT del driver miniport. Se il driver miniport non definisce un punto di ingresso per una routine HwScsiWmiXxx facoltativa, il driver della porta gestisce la richiesta.
In entrambi i casi, dopo la restituzione di ScsiPortWmiDispatchFunction , 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
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | scsiwmi.h (include Miniport.h, Scsi.h) |