ScsiPortWmiSetInstanceCount-Funktion (scsiwmi.h)

Der ScsiPortWmiSetInstanceCount gibt die Anzahl der Instanzen an, für die Datenpuffer innerhalb der WNODE_ALL_DATA Struktur im Anforderungskontext festgelegt werden müssen.

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

Syntax

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

Parameter

[in] RequestContext

Zeiger auf eine Struktur vom Typ SCSIWMI_REQUEST_CONTEXT , die den Anforderungskontext für einen WMI SRB enthält.

[in] InstanceCount

Enthält die Anzahl der Instanzen, für die der Minidriver Daten bereitstellt.

[out] BufferAvail

Enthält die Anzahl der Bytes des Pufferspeichers, die für die Beschreibung von Instanznamen und Daten verfügbar sind. Der Wert, der in diesem Element zurückgegeben wird, kann an Routinen ScsiPortWmiSetData und ScsiPortWmiSetInstanceName im BufferAvail-Parameter dieser Routinen übergeben werden.

Die ScsiPortWmiSetInstanceCount-Routine initialisiert ein Array von Zeigern auf Datenpuffer mit einem Arrayelement für jede Instanz. Wenn in der WNODE nicht genügend Arbeitsspeicher verfügbar ist, um ein Array der Größe InstanceCount zu initialisieren, wird in diesem Element eine Null zurückgegeben.

[out] SizeNeeded

Gibt an, wie viele Bytes erforderlich sind, um die gesamte WNODE zu beschreiben, bevor die internen Arrays im WNODE konfiguriert werden. Auf der Rückgabe enthält dieses Element die Größe des gesamten WNODE, einschließlich der neu initialisierten Arrays innerhalb der WNODE.

Rückgabewert

Die ScsiPortWmiSetInstanceCount-Routine gibt TRUE zurück, wenn der Vorgang erfolgreich ist und FALSCH , wenn der im Anforderungskontext enthaltene WNODE nicht vom Typ WNODE_ALL_DATA ist.

Bemerkungen

Der Minidriver muss ScsiPortWmiSetInstanceCount aufrufen, bevor sie entweder ScsiPortWmiSetData oder ScsiPortWmiSetInstanceName aufrufen. Der Minidriver sollte nur einmal ScsiPortWmiSetInstanceCount aufrufen.

Der Parameter RequestContext verweist auf eine Anforderungskontextstruktur , SCSIWMI_REQUEST_CONTEXT, die Informationen enthält, die einem WMI-SCSI-Anforderungsblock ( Windows Management Instrumentation , WMI) zugeordnet sind. Die Anforderungskontextstruktur enthält wiederum eine der WMI-WNODE_XXX-Strukturen , die vom WMI-System verwendet werden, um Daten zwischen Benutzermodusdatenkunden und Kernelmodusdatenanbietern wie Treibern zu übergeben.

Die ScsiPortWmiSetInstanceCount-Routine erfordert die WNODE-Struktur, die im Anforderungskontext definiert ist, um vom Typ WNODE_ALL_DATA zu sein. Dies liegt daran, dass ScsiPortWmiSetInstanceCount einen Datenbereich aufgibt, der Informationen für mehrere Instanzen enthält, die einem WMI-Datenblock zugeordnet sind. Im Gegensatz zur WNODE_SINGLE_INSTANCE Struktur, die Informationen zu einer einzelnen Instanz enthält, enthält die WNODE_ALL_DATA-Struktur ein Array von Zeigern auf Pufferbereiche für verschiedene Instanzen, und ScsiPortWmiSetInstanceCount initialisiert dieses Array, sodass jeder Puffer von Instanzdaten einzeln mithilfe eines Instanzindex zugegriffen werden kann.

Der für den Anforderungskontext zugewiesene Speicher muss gültig bleiben, bis der Miniporttreiber ScsiPortWmiPostProcess aufruft, und ScsiPortWmiPostProcess gibt den endgültigen SRB-Status und die Puffergröße zurück. Wenn der SRB pendiert, sollte der Speicher für den Anforderungskontext aus der SRB-Erweiterung zugewiesen werden. Wenn der SRB nicht pendiert werden kann, kann der Speicher aus einem Stapelframe zugewiesen werden, der nicht außerhalb des Bereichs liegt.

Anforderungen

   
Zielplattform Power BI Desktop
Header scsiwmi.h (include Miniport.h, Scsi.h)

Weitere Informationen

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE