WdfFdoRetrieveNextStaticChild, fonction (wdffdo.h)

[S’applique à KMDF uniquement]

La méthode WdfFdoRetrieveNextStaticChild récupère un handle à l’objet d’appareil d’infrastructure suivant dans une liste d’appareils enfants.

Syntaxe

WDFDEVICE WdfFdoRetrieveNextStaticChild(
  [in]           WDFDEVICE Fdo,
  [in, optional] WDFDEVICE PreviousChild,
  [in]           ULONG     Flags
);

Paramètres

[in] Fdo

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

[in, optional] PreviousChild

Handle d’un objet d’appareil framework qui représente l’appareil enfant retourné par un appel précédent à WdfFdoRetrieveNextStaticChild. Pour le premier appel à WdfFdoRetrieveNextStaticChild, cette valeur doit être NULL.

[in] Flags

Valeur d’énumérateur de type WDF_RETRIEVE_CHILD_FLAGS qui identifie le type d’appareils enfants que la méthode doit récupérer. Ce paramètre ne peut pas être égal à zéro.

Valeur retournée

Si l’opération réussit, la méthode retourne un handle à un objet d’appareil framework. Sinon, elle retourne NULL.

Un bogue système case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Les pilotes de bus qui utilisent l’énumération de bus statique peuvent appeler WdfFdoRetrieveNextStaticChild.

Pour récupérer les éléments d’une liste d’appareils enfants, le pilote doit :

  1. Appelez WdfFdoLockStaticChildListForIteration pour verrouiller la liste enfant.
  2. Appelez à plusieurs reprises WdfFdoRetrieveNextStaticChild pour obtenir les éléments de la liste, un par un, jusqu’à ce que la méthode retourne NULL.
  3. Appelez WdfFdoUnlockStaticChildListFromIteration pour déverrouiller la liste enfant.
Pour plus d’informations sur les listes enfants statiques, consultez Énumération des appareils sur un bus.

Exemples

L’exemple de code suivant recherche une liste enfant statique jusqu’à ce qu’elle trouve un appareil enfant avec un numéro de série qui correspond à une valeur spécifique. Pour obtenir d’autres exemples d’utilisations de WdfFdoRetrieveNextStaticChild, consultez l’exemple de pilote de bus Grille-pain .

PPDO_DEVICE_DATA  pdoData;
WDFDEVICE  hChild;
NTSTATUS  status = STATUS_INVALID_PARAMETER;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device,
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context data and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
        break;
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdffdo.h (include Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).)
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Voir aussi

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration