Partager via


WdfFdoAddStaticChild, fonction (wdffdo.h)

[S’applique uniquement à KMDF]

La méthode WdfFdoAddStaticChild ajoute un appareil spécifié à la liste des périphériques enfants identifiés par l’énumération statique à un pilote de fonction.

Syntaxe

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

Paramètres

[in] Fdo

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

[in] Child

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

Valeur de retour

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 .

Une vérification des bogues système 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 NT_SUCCESS évaluée comme faux, 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 d’appareil framework après WdfFdoAddStaticChild retourne 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;
}

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
En-tête wdffdo.h (include Wdf.h)
Bibliothèque Wdf01000.sys (voir Versioning de la bibliothèque Framework.)
IRQL <= DISPATCH_LEVEL
règles de conformité DDI addPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate