WdfChildListCreate-Funktion (wdfchildlist.h)
[Gilt nur für KMDF]
Die WdfChildListCreate-Methode erstellt eine untergeordnete Liste für ein angegebenes übergeordnetes Gerät.
Syntax
NTSTATUS WdfChildListCreate(
[in] WDFDEVICE Device,
[in] PWDF_CHILD_LIST_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
[out] WDFCHILDLIST *ChildList
);
Parameter
[in] Device
Ein Handle zu einem Framework-Geräteobjekt, das das übergeordnete Gerät darstellt.
[in] Config
Ein Zeiger auf eine WDF_CHILD_LIST_CONFIG Struktur, die vom Treiber bereitgestellte Konfigurationsinformationen für die untergeordnete Liste enthält.
[in, optional] ChildListAttributes
Ein Zeiger auf eine WDF_OBJECT_ATTRIBUTES Struktur, die vom Treiber bereitgestellte Objektattribute für das untergeordnete Listenobjekt des Frameworks enthält. (Das ParentObject-Element der Struktur muss NULL-sein.)
[out] ChildList
Ein Zeiger auf einen vom Aufrufer zugewiesenen Speicherort, der ein Handle für ein framework-untergeordnetes Listenobjekt empfängt.
Rückgabewert
WdfChildListCreate gibt STATUS_SUCCESS oder einen anderen Statuswert zurück, für den NT_SUCCESS(Status) gleich TRUEist, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Ein Eingabeparameter war ungültig. |
|
Ein Objekt konnte nicht zugeordnet werden. |
Diese Methode kann auch andere NTSTATUS-Wertezurückgeben.
Eine Systemfehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Bemerkungen
Das Framework erstellt eine standardmäßige untergeordnete Liste für jedes Framework-Geräteobjekt, das ein funktionales Geräteobjekt (FDO) darstellt. Um die standardmäßige untergeordnete Liste zu verwenden, ruft der Treiber WdfFdoGetDefaultChildListauf. Wenn Ihr Treiber zusätzliche untergeordnete Listen erfordert, kann er WdfChildListCreate aufrufen, um sie zu erstellen.
Das übergeordnete Element jedes untergeordneten Listenobjekts ist das Framework-Geräteobjekt des Geräts. Der Treiber kann dieses übergeordnete Element nicht ändern, und das ParentObject-Element oder die WDF_OBJECT_ATTRIBUTES Struktur muss NULL-sein.
Ihr Treiber kann das objekt der untergeordneten Liste nicht löschen, das WdfChildListCreate erstellt. Das Framework löscht das Objekt zur richtigen Zeit.
Weitere Informationen zu untergeordneten Listen finden Sie unter dynamische Enumeration.
Beispiele
Im folgenden Codebeispiel wird eine WDF_CHILD_LIST_CONFIG Struktur initialisiert und dann WdfChildListCreateaufgerufen.
WDF_CHILD_LIST_CONFIG listConfig;
WDF_CHILD_LIST_CONFIG_INIT(
&listConfig,
sizeof(PDO_IDENTIFICATION_DESCRIPTION),
My_EvtDeviceListCreatePdo
);
listConfig.AddressDescriptionSize = sizeof(PDO_ADDRESS_DESCRIPTION);
listConfig.EvtChildListScanForChildren = My_EvtChildListScanForChildren;
listConfig.EvtChildListIdentificationDescriptionDuplicate = My_EvtChildListIdentificationDescriptionDuplicate;
listConfig.EvtChildListIdentificationDescriptionCompare = My_EvtChildListIdentificationDescriptionCompare;
listConfig.EvtChildListIdentificationDescriptionCleanup = My_EvtChildListIdentificationDescriptionCleanup;
status = WdfChildListCreate(
device,
&listConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&ParentDeviceContext->ChildList
);
if (!NT_SUCCESS(status)) {
return status;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.0 |
Header- | wdfchildlist.h (include Wdf.h) |
Library | Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.) |
IRQL- | PASSIVE_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |