Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique uniquement à KMDF]
Le EvtChildListIdentificationDescriptionDuplicate fonction de rappel d’événement duplique une description d’identification enfant.
Syntaxe
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE EvtWdfChildListIdentificationDescriptionDuplicate;
NTSTATUS EvtWdfChildListIdentificationDescriptionDuplicate(
[in] WDFCHILDLIST ChildList,
[in] PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SourceIdentificationDescription,
[out] PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER DestinationIdentificationDescription
)
{...}
Paramètres
[in] ChildList
Handle d’un objet de liste enfant de framework.
[in] SourceIdentificationDescription
Pointeur vers une structure WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER qui identifie l’emplacement source de la description de l’identification enfant.
[out] DestinationIdentificationDescription
Pointeur vers une structure WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER qui identifie l’emplacement de destination de la description d’identification enfant dupliquée.
Valeur de retour
La fonction de rappel EvtChildListIdentificationDescriptionDuplicate doit retourner STATUS_SUCCESS, ou une autre valeur d’état pour laquelle NT_SUCCESS(status) est égal à TRUE, si l’opération réussit. Dans le cas contraire, cette fonction de rappel doit retourner une valeur d’état pour laquelle NT_SUCCESS(status) est égal à FALSE.
Remarques
Si un pilote de bus utilise énumération dynamique, il peut inscrire une EvtChildListIdentificationDescriptionDuplicate fonction de rappel en appelant WdfFdoInitSetDefaultChildListConfig ou WdfChildListCreate.
L’infrastructure doublons les descriptions d’identification fournies par le pilote afin qu’elle puisse avoir des copies internes des descriptions.
La EvtChildListIdentificationDescriptionDuplicate fonction de rappel doit créer une copie en double d’une description d’identification. Un pilote doit fournir cette fonction de rappel si l’infrastructure ne peut pas appeler RtlCopyMemory pour dupliquer la description de l’identification. (L’infrastructure ne peut pas appeler RtlCopyMemory si la description contient des pointeurs vers une mémoire supplémentaire.)
Si votre pilote ne fournit pas de fonction de rappel EvtChildListIdentificationDescriptionDuplicate fonction de rappel, l’infrastructure duplique les descriptions d’identification en appelant RtlCopyMemory.
Les étapes suivantes décrivent un scénario classique :
- Le pilote détermine qu’un appareil enfant existe.
- Le pilote crée une description d’identification en remplissant une structure définie par le pilote qui contient une structure WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER et éventuellement en allouant dynamiquement de la mémoire supplémentaire pour stocker les informations d’identification qui ont une taille spécifique à l’appareil.
- Le pilote appelle WdfChildListAddOrUpdateChildDescriptionAsPresent pour signaler un appareil enfant, en fournissant un pointeur vers la description de l’identification.
- L’infrastructure appelle la fonction de rappel EvtChildListIdentificationDescriptionDuplicate (le cas échéant) ou RtlCopyMemory pour dupliquer la description d’identification afin qu’elle puisse avoir une copie interne de la description.
- Allouez de la mémoire supplémentaire, généralement en appelant ExAllocatePool.
- Stockez l’adresse de la mémoire allouée dans la structure de description de l’adresse définie par le pilote (autrement dit, la fonction de rappel DestinationIdentificationDescription structure).
- Copiez d’autres membres de structure de la fonction de rappel SourceIdentificationDescription structure vers la structure DestinationIdentificationDescription de la fonction de rappel.
L’infrastructure acquiert un verrou d’objet de liste enfant interne avant d’appeler la fonction de rappel EvtChildListIdentificationDescriptionDuplicate fonction de rappel. Cette fonction de rappel doit uniquement effectuer des opérations liées à l’opération de duplication, telles que l’appel des méthodes d’objet mémoire du framework et l’accès à l’espace de contexte d’objet. Il ne doit pas appeler des méthodes qui accèdent à d’autres pilotes.
Si votre pilote fournit une fonction de rappel EvtChildListIdentificationDescriptionDuplicate, il peut également être nécessaire EvtChildListIdentificationDescriptionCopy, EvtChildListIdentificationDescriptionCompareet EvtChildListIdentificationDescriptionCleanup fonctions de rappel.
Pour plus d’informations sur l’énumération dynamique, consultez énumération des appareils sur un bus.
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.0 |
| d’en-tête | wdfchildlist.h (include Wdf.h) |
| IRQL | <= DISPATCH_LEVEL |
Voir aussi
EvtChildListIdentificationDescriptionCleanup
EvtChildListIdentificationDescriptionCompare
EvtChildListIdentificationDescriptionCopy
WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER