Freigeben über


WdfFdoAddStaticChild-Funktion (wdffdo.h)

[Gilt nur für KMDF]

Die WdfFdoAddStaticChild-Methode fügt der Liste der untergeordneten Geräte eines Funktionstreibers, die durch statische Enumeration identifiziert wurden, ein angegebenes Gerät hinzu.

Syntax

NTSTATUS WdfFdoAddStaticChild(
  [in] WDFDEVICE Fdo,
  [in] WDFDEVICE Child
);

Parameter

[in] Fdo

Ein Handle für ein Frameworkgeräteobjekt, das das übergeordnete Gerät darstellt.

[in] Child

Ein Handle für ein Frameworkgerätobjekt, das das untergeordnete Gerät darstellt.

Rückgabewert

Wenn der Vorgang erfolgreich ist, gibt die Methode STATUS_SUCCESS zurück. Weitere Rückgabewerte sind:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Fdo ist kein Handle für das Geräteobjekt eines Funktionstreibers.
 

Die Methode kann auch andere NTSTATUS-Werte zurückgeben.

Eine Systemfehlerprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Treiber, die die statische Busaufzählung verwenden, können WdfFdoAddStaticChild aufrufen. Weitere Informationen zu statischen untergeordneten Listen finden Sie unter Auflisten der Geräte auf einem Bus.

Wenn WdfFdoAddStaticChild einen NTSTATUS-Wert zurückgibt, der alsFALSE ausgewertet NT_SUCCESS, muss der Treiber WdfObjectDelete aufrufen, um das Framework-Geräteobjekt zu löschen, das das untergeordnete Gerät darstellt. Der Treiber darf das Framework-Geräteobjekt nicht löschen, nachdem WdfFdoAddStaticChild STATUS_SUCCESS zurückgibt.

Beispiele

Im folgenden Codebeispiel wird ein Frameworkgeräteobjekt erstellt, das ein neues untergeordnetes Gerät darstellt, und fügt das untergeordnete Gerät der Liste der untergeordneten Geräte des übergeordneten Geräts hinzu. Das vollständige Codebeispiel finden Sie im KbFiltr-Beispieltreiber .

NTSTATUS  status;
PWDFDEVICE_INIT  pDeviceInit = NULL;
WDFDEVICE  hChild = NULL;
WDF_OBJECT_ATTRIBUTES  pdoAttributes;

pDeviceInit = WdfPdoInitAllocate(Device);
if (pDeviceInit == NULL) {
    status = STATUS_INSUFFICIENT_RESOURCES;
    goto Cleanup;
}
...
status = WdfDeviceCreate(
                         &pDeviceInit,
                         &pdoAttributes,
                         &hChild
                         );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(pDeviceInit);
    pDeviceInit = NULL;
    goto Cleanup;
}
...
status = WdfFdoAddStaticChild(
                              Device,
                              hChild
                              );
if (!NT_SUCCESS(status)) {
    goto Cleanup;
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
Kopfzeile wdffdo.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.)
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate