Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо только к 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 (include Wdf.h) |
Библиотека | Wdf01000.sys (см. управление версиями библиотеки Платформы).) |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf) |