Freigeben über


ScsiPortWmiSetInstanceCount-Funktion (scsiwmi.h)

Die 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 mehr verfügbar sein. Stattdessen empfehlen wir die Verwendung des Storport-Treibers und Storport Miniport Treibermodelle.
 

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 in diesem Element zurückgegebene Wert 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 im WNODE nicht genügend Arbeitsspeicher verfügbar ist, um ein Array der Größe InstanceCountzu initialisieren, wird in diesem Element eine Null zurückgegeben.

[out] SizeNeeded

Gibt bei der Eingabe die Anzahl der Bytes an, die erforderlich sind, um die gesamte WNODE-zu beschreiben, bevor die internen Arrays im WNODE konfigurieren. Bei Rückgabe enthält dieses Element die Größe des gesamten WNODE, einschließlich der neu initialisierten Arrays innerhalb des WNODE.

Rückgabewert

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

Bemerkungen

Der Minidriver muss ScsiPortWmiSetInstanceCount- aufrufen, bevor ScsiPortWmiSetData oder ScsiPortWmiSetInstanceNameaufgerufen wird. Der Minidriver sollte nur einmal ScsiPortWmiSetInstanceCount aufrufen.

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

Die ScsiPortWmiSetInstanceCount Routine erfordert die WNODE-Struktur, die innerhalb des Anforderungskontexts vom Typ WNODE_ALL_DATAdefiniert ist. Dies liegt daran, dass ScsiPortWmiSetInstanceCount einen Datenbereich einhält, 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 auf jeden Instanzdatenpuffer 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 die endgültige SRB-Status- und Puffergröße zurückgibt. Wenn der SRB pendieren kann, sollte der Speicher für den Anforderungskontext von 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 Gültigkeitsbereichs liegt.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- scsiwmi.h (include Miniport.h, Scsi.h)

Siehe auch

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE