PSCSIWMI_QUERY_DATABLOCK funzione di callback (scsiwmi.h)
Viene chiamata la routine HwScsiWmiQueryDataBlock di un driver miniport per ottenere una singola istanza o tutte le istanze di un blocco di dati. Questa routine è obbligatoria.
Sintassi
PSCSIWMI_QUERY_DATABLOCK PscsiwmiQueryDatablock;
BOOLEAN PscsiwmiQueryDatablock(
[in] PVOID Context,
[in] PSCSIWMI_REQUEST_CONTEXT DispatchContext,
[in] ULONG GuidIndex,
[in] ULONG InstanceIndex,
[in] ULONG InstanceCount,
[in, out] PULONG InstanceLengthArray,
[in] ULONG BufferAvail,
[out] PUCHAR Buffer
)
{...}
Parametri
[in] Context
Punta al valore di contesto definito dal driver miniport passato a ScsiPortWmiDispatchFunction.
[in] DispatchContext
Punta alla struttura SCSIWMI_REQUEST_CONTEXT passata dal driver miniport a ScsiPortWmiDispatchFunction.
[in] GuidIndex
Specifica il blocco di dati in base al relativo indice nell'elenco di GUID nella struttura SCSI_WMILIB_CONTEXT che il driver miniport passato a ScsiPortWmiDispatchFunction.
[in] InstanceIndex
Se HwScsiWmiQueryDataBlock viene chiamato in risposta a una richiesta di IRP_MN_QUERY_SINGLE_INSTANCE, InstanceIndex specifica l'istanza di cui eseguire la query. Se HwScsiWmiQueryDataBlock viene chiamato in risposta a un IRP_MN_QUERY_ALL_DATA REQUEST, InstanceIndex è zero.
[in] InstanceCount
Se HwScsiWmiQueryDataBlock viene chiamato in risposta a una richiesta di IRP_MN_QUERY_SINGLE_INSTANCE, InstanceCount è 1. Se HwScsiWmiQueryDataBlock viene chiamato in risposta a un IRP_MN_QUERY_ALL_DATA REQUEST, InstanceCount corrisponde al numero di istanze da restituire.
[in, out] InstanceLengthArray
Punta a una matrice di ULONG che indicano la lunghezza di ogni istanza del blocco di dati da restituire. Questa matrice include elementi InstanceCount . Questo valore può essere NULL quando non è disponibile spazio sufficiente nel buffer di output per soddisfare la richiesta.
[in] BufferAvail
Specifica il numero massimo di byte disponibili per la ricezione dei dati nel buffer in Buffer.
[out] Buffer
Punta al buffer per ricevere i dati dell'istanza. Se il buffer è sufficientemente grande da ricevere tutti i dati, il driver miniport scrive i dati dell'istanza nel buffer con ogni istanza allineata su un limite a 8 byte. Se il buffer è troppo piccolo per ricevere tutti i dati, il driver miniport chiama ScsiPortWmiPostProcess con lo stato SRB_STATUS_DATA_OVERRUN e imposta BufferUsed sulle dimensioni del buffer di output necessario per soddisfare la richiesta.
Valore restituito
HwScsiWmiQueryDataBlock restituisce SRB_STATUS_PENDING se la richiesta è in sospeso o un valore di stato SRB diverso da zero se la richiesta è stata completata. Il valore di stato SRB restituito da questa routine corrisponde a quello passato a ScsiPortWmiPostProcess. Anche se il tipo di dati del valore restituito è BOOLEAN, la routine HwScsiWmiQueryDataBlock restituisce effettivamente un valore di stato SRB.
Commenti
Quando un driver miniport riceve un SRB in cui il membro Function è impostato su SRB_FUNCTION_WMI, chiama ScsiPortWmiDispatchFunction con un puntatore a una struttura SCSI_WMILIB_CONTEXT inizializzata e MinorFunction impostato su Srb-WmiSubFunction>. Il driver della porta SCSI chiama la routine HwScsiWmiQueryDataBlock del driver miniport se MinorFunction indica una richiesta di ottenere una singola istanza o tutte le istanze di un blocco di dati.
Il driver miniport scrive i dati dell'istanza nel buffer. Per le richieste che non vengono eseguite tramite penna, il driver miniport chiama ScsiPortWmiPostProcess con un valore SrbStatus appropriato prima di restituire da HwScsiWmiQueryDataBlock. Se la richiesta viene eseguita tramite penna, il driver miniport chiama ScsiPortWmiPostProcess al termine della richiesta.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | scsiwmi.h (include Scsiwmi.h) |