WdfChildListCreate, fonction (wdfchildlist.h)
[S’applique à KMDF uniquement]
La méthode WdfChildListCreate crée une liste enfant pour un appareil parent spécifié.
Syntaxe
NTSTATUS WdfChildListCreate(
[in] WDFDEVICE Device,
[in] PWDF_CHILD_LIST_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
[out] WDFCHILDLIST *ChildList
);
Paramètres
[in] Device
Handle pour un objet d’appareil framework qui représente l’appareil parent.
[in] Config
Pointeur vers une structure WDF_CHILD_LIST_CONFIG qui contient des informations de configuration fournies par le pilote pour la liste enfant.
[in, optional] ChildListAttributes
Pointeur vers une structure WDF_OBJECT_ATTRIBUTES qui contient des attributs d’objet fournis par le pilote pour l’objet de liste enfant du framework. (Le membre ParentObject de la structure doit être NULL.)
[out] ChildList
Pointeur vers un emplacement alloué par l’appelant qui reçoit un handle pour un objet de liste enfant du framework.
Valeur retournée
WdfChildListCreate retourne STATUS_SUCCESS, ou une autre valeur de status pour laquelle NT_SUCCESS(status) est égal à TRUE, si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
Un paramètre d’entrée n’était pas valide. |
|
Impossible d’allouer un objet. |
Cette 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
L’infrastructure crée une liste enfant par défaut pour chaque objet d’appareil d’infrastructure qui représente un objet d’appareil fonctionnel (FDO). Pour utiliser la liste enfant par défaut, le pilote appelle WdfFdoGetDefaultChildList. Si votre pilote nécessite des listes enfants supplémentaires, il peut appeler WdfChildListCreate pour les créer.
Le parent de chaque objet de liste enfant est l’objet d’appareil framework de l’appareil. Le pilote ne peut pas modifier ce parent, et le membre ParentObject ou la structure WDF_OBJECT_ATTRIBUTES doit avoir la valeur NULL.
Votre pilote ne peut pas supprimer l’objet de liste enfant créé par WdfChildListCreate . L’infrastructure supprime l’objet au moment approprié.
Pour plus d’informations sur les listes enfants, consultez Énumération dynamique.
Exemples
L’exemple de code suivant initialise une structure WDF_CHILD_LIST_CONFIG , puis appelle WdfChildListCreate.
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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
En-tête | wdfchildlist.h (inclure Wdf.h) |
Bibliothèque | Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).) |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |