Partager via


Fonction WdfFdoAddStaticChild (wdffdo.h)

[S’applique uniquement à KMDF]

La méthode WdfFdoAddStaticChild ajoute un appareil spécifié à la liste d’un pilote de fonction d’appareils enfants qui ont été identifiés par l’énumération statique.

Syntaxe

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

Paramètres

[in] Fdo

Handle d’un objet d’appareil framework qui représente l’appareil parent.

[in] Child

Handle d’un objet d’appareil framework qui représente l’appareil enfant.

Valeur retournée

Si l’opération réussit, la méthode retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
Fdo n’est pas un handle pour l’objet de périphérique d’un pilote de fonction.
 

La méthode peut également retourner d’autres valeurs NTSTATUS.

Un bogue système case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Les pilotes qui utilisent l’énumération de bus statique peuvent appeler WdfFdoAddStaticChild. Pour plus d’informations sur les listes enfants statiques, consultez Énumération des appareils sur un bus.

Si WdfFdoAddStaticChild retourne une valeur NTSTATUS que NT_SUCCESS évalue comme FALSE, le pilote doit appeler WdfObjectDelete pour supprimer l’objet d’appareil framework qui représente l’appareil enfant. Le pilote ne doit pas supprimer l’objet de périphérique framework après que WdfFdoAddStaticChild a retourné STATUS_SUCCESS.

Exemples

L’exemple de code suivant crée un objet d’appareil framework qui représente un nouvel appareil enfant et ajoute l’appareil enfant à la liste des enfants de l’appareil parent. Pour obtenir l’exemple de code complet, consultez l’exemple de pilote KbFiltr .

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;
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdffdo.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.)
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI AddPdoToStaticChildList(kmdf),DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate