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 :
- Appelez WdfFdoLockStaticChildListForIteration pour verrouiller la liste enfant.
- Appelez à plusieurs reprises WdfFdoRetrieveNextStaticChild pour obtenir les éléments de la liste, un par un, jusqu’à ce que la méthode retourne NULL.
- Appelez WdfFdoUnlockStaticChildListFromIteration pour déverrouiller la liste enfant.
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) |