WdfCmResourceListInsertDescriptor-Funktion (wdfresource.h)
[Gilt nur für KMDF]
Die WdfCmResourceListInsertDescriptor-Methode fügt einen Ressourcendeskriptor in eine angegebene Ressourcenliste ein.
Syntax
NTSTATUS WdfCmResourceListInsertDescriptor(
[in] WDFCMRESLIST List,
[in] PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
[in] ULONG Index
);
Parameter
[in] List
Ein Handle für ein Framework-Ressourcenlistenobjekt, das eine Liste der Hardwareressourcen für ein Gerät darstellt.
[in] Descriptor
Ein Zeiger auf eine CM_PARTIAL_RESOURCE_DESCRIPTOR Struktur, die eine Hardwareressource beschreibt.
[in] Index
Ein nullbasierter Wert, der als Index in der logischen Konfiguration verwendet wird, die List angibt. Um am Ende der Ressourcenliste einen Ressourcendeskriptor hinzuzufügen, geben Sie WDF_INSERT_AT_END oder den Rückgabewert aus WdfCmResourceListGetCount an.
Rückgabewert
WdfCmResourceListInsertDescriptor gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Ein ungültiger Parameter wurde angegeben. |
|
Der Treiber durfte der logischen Konfiguration, die vom List-Parameter angegeben wurde, keine Deskriptoren hinzufügen. Beispielsweise konnte der Treiber die logische Konfiguration nicht ändern, die seine Rückruffunktion EvtDevicePrepareHardware oder EvtDeviceReleaseHardware empfangen hat. |
|
Das Framework konnte keinen Speicherplatz zuweisen, um den Deskriptor zu speichern, auf den der Descriptor-Parameter verweist. |
|
Der vom Index-Parameter angegebene Wert war zu groß. |
Eine Systemfehlerprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Die WdfCmResourceListInsertDescriptor-Methode fügt den Ressourcendeskriptor, den Descriptor angibt, in die Ressourcenliste ein, die List angibt, vor dem Ressourcendeskriptor, den der Index-Wert identifiziert.
Um am Ende einer Ressourcenliste einen Ressourcendeskriptor hinzuzufügen, geben Sie WDF_INSERT_AT_END oder den Rückgabewert aus WdfCmResourceListGetCount als Indexwert an. Alternativ können Sie die WdfCmResourceListAppendDescriptor-Methode verwenden.
Das Framework kopiert den Inhalt der CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur in den internen Speicher, sodass die Treiberroutine, die WdfCmResourceListInsertDescriptor aufruft, die Struktur lokal zuordnen kann. Nachdem der Treiber WdfCmResourceListInsertDescriptor aufgerufen hat, kann er die CM_PARTIAL_RESOURCE_DESCRIPTOR-Struktur wiederverwenden.
Weitere Informationen zu Ressourcenlisten finden Sie unter Hardwareressourcen für Framework-Based Treiber.
Beispiele
Im folgenden Codebeispiel wird am Ende der Ressourcenliste ein Ressourcendeskriptor hinzugefügt, den eine Rückruffunktion von EvtDeviceResourcesQuery empfängt .
NTSTATUS
PdoEvtDeviceResourcesQuery(
IN WDFDEVICE Device,
IN WDFCMRESLIST Resources
)
{
CM_PARTIAL_RESOURCE_DESCRIPTOR newDescriptor;
...
newDescriptor.Type = CmResourceTypePort;
newDescriptor.ShareDisposition = CmResourceShareDeviceExclusive;
newDescriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
newDescriptor.u.Port.Length = 1;
newDescriptor.u.Port.Start = 0;
status = WdfCmResourceListInsertDescriptor(
Resources,
&newDescriptor,
WDF_INSERT_AT_END
);
...
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfresource.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.) |
IRQL | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |