Partager via


WdfFdoRetrieveNextStaticChild, fonction (wdffdo.h)

[S’applique uniquement à KMDF]

La méthode WdfFdoRetrieveNextStaticChild récupère un handle à l’objet d’appareil framework 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 vers un objet d’appareil framework qui représente l’appareil parent.

[in, optional] PreviousChild

Handle vers 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 WDF_RETRIEVE_CHILD_FLAGS-typée 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 de retour

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

Une vérification des bogues système 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’il trouve un appareil enfant avec un numéro de série qui correspond à une valeur spécifique. Pour 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);

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
En-tête wdffdo.h (include Wdf.h)
Bibliothèque Wdf01000.sys (voir Versioning de la bibliothèque Framework.)
IRQL <= DISPATCH_LEVEL
règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Voir aussi

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration