Функция WdfFdoRetrieveNextStaticChild (wdffdo.h)
[Применяется только к KMDF]
Метод WdfFdoRetrieveNextStaticChild извлекает дескриптор следующего объекта устройства платформы в списке дочерних устройств.
Синтаксис
WDFDEVICE WdfFdoRetrieveNextStaticChild(
[in] WDFDEVICE Fdo,
[in, optional] WDFDEVICE PreviousChild,
[in] ULONG Flags
);
Параметры
[in] Fdo
Дескриптор объекта устройства платформы, представляющего родительское устройство.
[in, optional] PreviousChild
Дескриптор объекта устройства платформы, представляющий дочернее устройство, возвращенное предыдущим вызовом WdfFdoRetrieveNextStaticChild. Для первого вызова WdfFdoRetrieveNextStaticChild это значение должно иметь значение NULL.
[in] Flags
Значение перечислителя WDF_RETRIEVE_CHILD_FLAGS типа, определяющее тип дочерних устройств, которые должен получить метод. Этот параметр не может быть равен нулю.
Возвращаемое значение
Если операция выполнена успешно, метод возвращает дескриптор объекту устройства платформы. В противном случае возвращается значение NULL.
Системная ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Драйверы шины, использующие перечисление статической шины, могут вызывать WdfFdoRetrieveNextStaticChild.
Чтобы получить элементы в списке дочерних устройств, драйвер должен:
- Вызовите WdfFdoLockStaticChildListForIteration , чтобы заблокировать дочерний список.
- Многократно вызывайте WdfFdoRetrieveNextStaticChild , чтобы получить элементы в списке по одному, пока метод не вернет значение NULL.
- Вызовите WdfFdoUnlockStaticChildListFromIteration , чтобы разблокировать дочерний список.
Примеры
В следующем примере кода выполняется поиск статического дочернего списка, пока не будет найдено дочернее устройство с серийным номером, соответствующим определенному значению. Другие примеры использования WdfFdoRetrieveNextStaticChild см. в разделе Пример драйвера автобуса Для тостера .
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);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdffdo.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки платформы). |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf) |