Функция WdfFdoAddStaticChild (wdffdo.h)
[Применяется только к KMDF]
Метод WdfFdoAddStaticChild добавляет указанное устройство в список дочерних устройств драйвера функции, которые были определены статическим перечислением.
Синтаксис
NTSTATUS WdfFdoAddStaticChild(
[in] WDFDEVICE Fdo,
[in] WDFDEVICE Child
);
Параметры
[in] Fdo
Дескриптор объекта устройства платформы, представляющего родительское устройство.
[in] Child
Дескриптор объекта устройства платформы, представляющего дочернее устройство.
Возвращаемое значение
Если операция выполнена успешно, метод возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Fdo не является дескриптором объекта устройства драйвера функции. |
Метод также может возвращать другие значения NTSTATUS.
Системная ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Драйверы, использующие перечисление статической шины, могут вызывать WdfFdoAddStaticChild. Дополнительные сведения о статических дочерних списках см. в разделе Перечисление устройств в шине.
Если WdfFdoAddStaticChild возвращает значение NTSTATUS, которое NT_SUCCESS принимает значение FALSE, драйвер должен вызвать WdfObjectDelete , чтобы удалить объект устройства платформы, представляющий дочернее устройство. Драйвер не должен удалять объект устройства платформы после того , как WdfFdoAddStaticChild возвращает STATUS_SUCCESS.
Примеры
В следующем примере кода создается объект устройства платформы, представляющий новое дочернее устройство, и добавляется дочернее устройство в список дочерних устройств родительского устройства. Полный пример кода см. в примере драйвера KbFiltr .
NTSTATUS status;
PWDFDEVICE_INIT pDeviceInit = NULL;
WDFDEVICE hChild = NULL;
WDF_OBJECT_ATTRIBUTES pdoAttributes;
pDeviceInit = WdfPdoInitAllocate(Device);
if (pDeviceInit == NULL) {
status = STATUS_INSUFFICIENT_RESOURCES;
goto Cleanup;
}
...
status = WdfDeviceCreate(
&pDeviceInit,
&pdoAttributes,
&hChild
);
if (!NT_SUCCESS(status)) {
WdfDeviceInitFree(pDeviceInit);
pDeviceInit = NULL;
goto Cleanup;
}
...
status = WdfFdoAddStaticChild(
Device,
hChild
);
if (!NT_SUCCESS(status)) {
goto Cleanup;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdffdo.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки платформы). |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |