Поделиться через


Функция 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)

См. также

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate