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.

Nota I modelli di driver di porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare il driver Storport e i modelli di driver miniport Storport .
 

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)

Vedi anche

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess