Функция 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 (include Wdf.h) |
Библиотека | Wdf01000.sys (см. управление версиями библиотеки Платформы).) |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |