Функция 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. Платформа возвращает дополнительные сведения о состоянии в элементе состояния структуры WDF_CHILD_RETRIEVE_INFO.
Проверка системной ошибки возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Замечания
Перед вызовом WdfChildListRetrievePdoдрайвер должен поместить описание идентификации в структуру WDF_CHILD_RETRIEVE_INFO.
Метод WdfChildListRetrievePdo проходит по указанному списку дочерних элементов и ищет ребенка с описанием идентификации, который соответствует тому, что драйвер, предоставленный в структуре WDF_CHILD_RETRIEVE_INFO. Если платформа находит совпадение и если дочерний элемент имеет описание адреса, платформа заполняет описание адреса структуры.
Не забудьте упаковать этот вызов с помощью WdfChildListBeginIteration и WdfChildListEndIteration, чтобы защитить вызывающий объект от внезапного удаления 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) |