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