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.
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 bei der Rückgabe die Anzahl der Bytes des Pufferspeichers, der zum Beschreiben instance Namen und Daten verfügbar ist. Der wert, der in diesem Member zurückgegeben wird, kann an die 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 instance. Wenn im WNODE nicht genügend Arbeitsspeicher zum Initialisieren eines Arrays der Größe InstanceCount verfügbar ist, wird in diesem Element eine Null zurückgegeben.
[out] SizeNeeded
Gibt bei der Eingabe die Anzahl der Bytes an, die zum Beschreiben des gesamten WNODE vor dem Konfigurieren der internen Arrays im WNODE erforderlich sind. Bei der 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_DATA ist.
Hinweise
Der Minidriver muss ScsiPortWmiSetInstanceCount aufrufen, bevor er entweder ScsiPortWmiSetData oder ScsiPortWmiSetInstanceName aufruft. Der Minidriver sollte ScsiPortWmiSetInstanceCount nur einmal aufrufen.
Der Parameter RequestContext verweist auf eine Anforderungskontextstruktur SCSIWMI_REQUEST_CONTEXT, die Informationen enthält, die einem 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 Benutzermodusdatenverbrauchern und Kernelmodusdatenanbietern wie Treibern zu übergeben.
Für die ScsiPortWmiSetInstanceCount-Routine muss die WNODE-Struktur, die im Anforderungskontext definiert ist, vom Typ WNODE_ALL_DATA sein. Dies liegt daran, dass ScsiPortWmiSetInstanceCount einen Datenbereich festlegt, 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 instance 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 Puffer von instance Daten einzeln mithilfe eines instance Index zugegriffen werden kann.
Der für den Anforderungskontext zugewiesene Arbeitsspeicher muss gültig bleiben, bis der Miniporttreiber ScsiPortWmiPostProcess aufgerufen hat, und ScsiPortWmiPostProcess gibt die endgültige SRB-status- und Puffergröße zurück. Wenn der SRB einen Stift verwenden kann, sollte der Arbeitsspeicher für den Anforderungskontext aus der SRB-Erweiterung zugewiesen werden. Wenn der SRB keinen Stift erstellen kann, kann der Arbeitsspeicher aus einem Stapelrahmen zugewiesen werden, der nicht aus dem Bereich herausgeht.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | scsiwmi.h (einschließlich Miniport.h, Scsi.h) |