Partager via


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
STATUS_INVALID_PARAMETER
Un paramètre d’entrée n’était pas valide.
STATUS_INSUFFICIENT_RESOURCES
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)

Voir aussi

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList