Freigeben über


PSCSIWMI_QUERY_DATABLOCK Rückruffunktion (scsiwmi.h)

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

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle sind möglicherweise geändert oder in Zukunft nicht mehr verfügbar. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.
 

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

Zeigt auf den vom Miniporttreiber definierten 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 Antwort auf eine IRP_MN_QUERY_SINGLE_INSTANCE-Anforderung aufgerufen wird, gibt InstanceIndex die instance an, die abgefragt werden soll. Wenn HwScsiWmiQueryDataBlock als Antwort auf eine IRP_MN_QUERY_ALL_DATA REQUEST aufgerufen wird, ist InstanceIndex null.

[in] InstanceCount

Wenn HwScsiWmiQueryDataBlock als Antwort 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 der einzelnen instance 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 zum Empfangen von Daten im Puffer bei Buffer verfügbar sind.

[out] Buffer

Verweist auf den Puffer, um instance Daten zu empfangen. Wenn der Puffer groß genug ist, um alle Daten zu empfangen, schreibt der Miniporttreiber instance Daten in den Puffer, wobei die einzelnen instance an einer 8-Byte-Grenze ausgerichtet sind. Wenn der Puffer zu klein ist, um alle Daten zu empfangen, ruft der Miniporttreiber ScsiPortWmiPostProcess mit einer status von 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 SRB-Wert ungleich null status, wenn die Anforderung abgeschlossen wurde. Der von dieser Routine zurückgegebene SRB-status-Wert entspricht dem wert, der an ScsiPortWmiPostProcess übergeben wurde. Obwohl der Rückgabewertdatentyp BOOLEAN ist, gibt die HwScsiWmiQueryDataBlock-Routine tatsächlich einen SRB-status Wert zurück.

Hinweise

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

Der Miniporttreiber schreibt instance Daten in den Puffer. Für Anforderungen, die keine Stifte enthalten, ruft der Miniporttreiber ScsiPortWmiPostProcess mit einem entsprechenden SrbStatus-Wert auf, bevor er von HwScsiWmiQueryDataBlock zurückgibt. Wenn die Anforderung stiftet, ruft der Miniporttreiber ScsiPortWmiPostProcess auf, wenn die Anforderung abgeschlossen ist.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile scsiwmi.h (Scsiwmi.h einschließen)

Weitere Informationen

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess