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


Функция WdfFdoAddStaticChild (wdffdo.h)

[Применяется только к KMDF]

Метод WdfFdoAddStaticChild добавляет указанное устройство в список дочерних устройств драйвера функции, которые были определены статическим перечислением.

Синтаксис

NTSTATUS WdfFdoAddStaticChild(
  [in] WDFDEVICE Fdo,
  [in] WDFDEVICE Child
);

Параметры

[in] Fdo

Дескриптор объекта устройства платформы, представляющего родительское устройство.

[in] Child

Дескриптор объекта устройства платформы, представляющего дочернее устройство.

Возвращаемое значение

Если операция выполнена успешно, метод возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
STATUS_INVALID_PARAMETER
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)

См. также раздел

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate