Функция WdfChildListRetrievePdo (wdfchildlist.h)
[Относится только к KMDF]
Метод WdfChildListRetrievePdo возвращает дескриптор объекту устройства платформы, связанному с указанным дочерним описанием в дочернем списке.
Синтаксис
WDFDEVICE WdfChildListRetrievePdo(
[in] WDFCHILDLIST ChildList,
[in, out] PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
);
Параметры
[in] ChildList
Дескриптор дочернего объекта списка.
[in, out] RetrieveInfo
Указатель на структуру, выделенную драйвером WDF_CHILD_RETRIEVE_INFO , которую драйвер инициализирует с описанием идентификации извлекаемого дочернего элемента.
Возвращаемое значение
WdfChildListRetrievePdo возвращает дескриптор объекту устройства платформы, если указанное дочернее устройство находится в дочернем списке, если объект устройства платформы существует для дочернего устройства и если платформа сообщила о существовании устройства диспетчеру PnP. В противном случае метод возвращает значение NULL. Платформа возвращает дополнительные сведения о состоянии в элементе Status структуры WDF_CHILD_RETRIEVE_INFO .
Системная ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Перед вызовом WdfChildListRetrievePdo драйвер должен поместить описание идентификации в структуру WDF_CHILD_RETRIEVE_INFO .
Метод WdfChildListRetrievePdo просматривает указанный список дочерних элементов, ища дочерний элемент с описанием идентификации, соответствующим описанию, предоставленному драйвером в структуре WDF_CHILD_RETRIEVE_INFO. Если платформа находит совпадение и если дочерний элемент содержит описание адреса, платформа заполняет описание адреса структуры.
Обязательно заключите этот вызов в оболочку wdfChildListBeginIteration и WdfChildListEndIteration , чтобы защитить вызывающий объект от внезапного удаления PnP PDO в другом потоке.
Дополнительные сведения о дочерних списках см. в разделе Динамическое перечисление.
Примеры
В следующем примере кода выполняется поиск дочернего списка, чтобы найти дочернее устройство, описание идентификации которого содержит указанный серийный номер, и получает дескриптор объекта устройства, представляющего дочернее устройство.
WDF_CHILD_LIST_ITERATOR iterator;
PDO_IDENTIFICATION_DESCRIPTION description;
WDF_CHILD_RETRIEVE_INFO info;
WDFDEVICE hChild;
WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT(
&description.Header,
sizeof(description)
);
description.SerialNo = DeviceSerialNumber;
WDF_CHILD_RETRIEVE_INFO_INIT(
&info,
&description.Header
);
WDF_CHILD_LIST_ITERATOR_INIT(&iterator, WdfRetrieveAllChildren);
WdfChildListBeginIteration(childList, &iterator);
hChild = WdfChildListRetrievePdo(
childList,
&info
);
... access hChild ...
WdfChildListEndIteration(childList, &iterator);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfchildlist.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |