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 |
---|---|
|
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) |