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