Freigeben über


PSCSIWMI_QUERY_DATABLOCK Rückruffunktion (scsiwmi.h)

Die HwScsiWmiQueryDataBlock Routine eines Miniporttreibers wird aufgerufen, um eine einzelne Instanz oder alle Instanzen eines Datenblocks abzurufen. Diese Routine ist erforderlich.

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht mehr verfügbar sein. Stattdessen empfehlen wir die Verwendung des Storport-Treibers und Storport Miniport Treibermodelle.
 

Syntax

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
)
{...}

Parameter

[in] Context

Verweist auf den miniport treiberdefinierten Kontextwert, der an ScsiPortWmiDispatchFunctionübergeben wird.

[in] DispatchContext

Verweist auf die SCSIWMI_REQUEST_CONTEXT Struktur, die der Miniporttreiber an ScsiPortWmiDispatchFunctionübergeben hat.

[in] GuidIndex

Gibt den Datenblock anhand seines Indexes in der Liste der GUIDs in der SCSI_WMILIB_CONTEXT Struktur an, die der Miniporttreiber an ScsiPortWmiDispatchFunctionübergeben hat.

[in] InstanceIndex

Wenn HwScsiWmiQueryDataBlock- als Reaktion auf eine IRP_MN_QUERY_SINGLE_INSTANCE Anforderung aufgerufen wird, gibt InstanceIndex- die instanz an, die abgefragt werden soll. Wenn HwScsiWmiQueryDataBlock- als Reaktion auf eine IRP_MN_QUERY_ALL_DATA REQUEST aufgerufen wird, ist InstanceIndex- Null.

[in] InstanceCount

Wenn HwScsiWmiQueryDataBlock- als Reaktion auf eine IRP_MN_QUERY_SINGLE_INSTANCE Anforderung aufgerufen wird, ist InstanceCount- 1. Wenn HwScsiWmiQueryDataBlock- als Reaktion auf eine IRP_MN_QUERY_ALL_DATA REQUEST aufgerufen wird, ist InstanceCount- die Anzahl der zurückzugebenden Instanzen.

[in, out] InstanceLengthArray

Verweist auf ein Array von ULONGs, die die Länge jeder Instanz des zurückzugebenden Datenblocks angeben. Dieses Array verfügt über InstanceCount--Elemente. Dieser Wert kann NULL- sein, wenn nicht genügend Speicherplatz im Ausgabepuffer vorhanden ist, um die Anforderung zu erfüllen.

[in] BufferAvail

Gibt die maximale Anzahl von Bytes an, die für den Empfang von Daten im Puffer bei Bufferverfügbar sind.

[out] Buffer

Verweist auf den Puffer, um Instanzdaten zu empfangen. Wenn der Puffer groß genug ist, um alle Daten zu empfangen, schreibt der Miniporttreiber Instanzdaten in den Puffer, wobei jede Instanz an einer Grenze von 8 Byte ausgerichtet ist. Wenn der Puffer zu klein ist, um alle Daten zu empfangen, ruft der Miniporttreiber ScsiPortWmiPostProcess mit dem Status SRB_STATUS_DATA_OVERRUN auf und legt BufferUsed- auf die Größe des Ausgabepuffers fest, der zum Erfüllen der Anforderung erforderlich ist.

Rückgabewert

HwScsiWmiQueryDataBlock- gibt SRB_STATUS_PENDING zurück, wenn die Anforderung aussteht oder ein Nichtzero-SRB-Statuswert, wenn die Anforderung abgeschlossen wurde. Der von dieser Routine zurückgegebene SRB-Statuswert entspricht dem, was an ScsiPortWmiPostProcessübergeben wurde. Obwohl der Rückgabewert-Datentyp BOOLEAN ist, gibt die HwScsiWmiQueryDataBlock Routine tatsächlich einen SRB-Statuswert zurück.

Bemerkungen

Wenn ein Miniporttreiber einen SRB empfängt, in dem das Function Member auf SRB_FUNCTION_WMI festgelegt ist, ruft er ScsiPortWmiDispatchFunction mit einem Zeiger auf eine initialisierte SCSI_WMILIB_CONTEXT Struktur auf und MinorFunction auf Srb->WmiSubFunctionfestgelegt. Der SCSI-Porttreiber ruft die HwScsiWmiQueryDataBlock Routine des Miniporttreibers auf, wenn MinorFunction eine Anforderung zum Abrufen einer einzelnen Instanz oder aller Instanzen eines Datenblocks angibt.

Der Miniporttreiber schreibt Instanzdaten in den Puffer. Für Anforderungen, die nicht pendiert werden, ruft der Miniporttreiber ScsiPortWmiPostProcess mit einem entsprechenden SrbStatus Wert auf, bevor er von HwScsiWmiQueryDataBlockzurückgegeben wird. Wenn die Anforderung stiftet, ruft der Miniporttreiber ScsiPortWmiPostProcess auf, wenn die Anforderung abgeschlossen ist.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- scsiwmi.h (include Scsiwmi.h)

Siehe auch

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction-

ScsiPortWmiPostProcess-