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


Функция WdfChildListCreate (wdfchildlist.h)

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

Метод WdfChildListCreate создает дочерний список для указанного родительского устройства.

Синтаксис

NTSTATUS WdfChildListCreate(
  [in]           WDFDEVICE              Device,
  [in]           PWDF_CHILD_LIST_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
  [out]          WDFCHILDLIST           *ChildList
);

Параметры

[in] Device

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

[in] Config

Указатель на структуру WDF_CHILD_LIST_CONFIG, содержащую сведения о конфигурации, предоставленные драйвером для дочернего списка.

[in, optional] ChildListAttributes

Указатель на структуру WDF_OBJECT_ATTRIBUTES, содержащую атрибуты объекта, предоставленные драйвером для объекта дочернего списка платформы. (Элемент ParentObj ect структуры должен быть NULL.)

[out] ChildList

Указатель на выделенное вызывающим расположением, которое получает дескриптор к объекту дочернего списка платформы.

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

WdfChildListCreate возвращает STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(состояние) равно TRUE, если операция завершается успешно. В противном случае этот метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_PARAMETER
Недопустимый входной параметр.
STATUS_INSUFFICIENT_RESOURCES
Не удалось выделить объект.
 

Этот метод также может возвращать другие значения NTSTATUS.

Проверка системной ошибки возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Платформа создает дочерний список по умолчанию для каждого объекта устройства платформы, представляющего функциональный объект устройства (FDO). Чтобы использовать дочерний список по умолчанию, драйвер вызывает WdfFdoGetDefaultChildList. Если драйверу требуются дополнительные дочерние списки, он может вызывать WdfChildListCreate для их создания.

Родительским объектом каждого дочернего списка является объект устройства платформы устройства. Драйвер не может изменить этот родительский элемент, а элемент ParentObject или структуру WDF_OBJECT_ATTRIBUTES должен быть NULL.

Драйвер не может удалить объект дочернего списка, который создает WdfChildListCreate. Платформа удаляет объект в нужное время.

Дополнительные сведения о дочерних списках см. в динамического перечисления.

Примеры

Следующий пример кода инициализирует структуру WDF_CHILD_LIST_CONFIG, а затем вызывает WdfChildListCreate.

WDF_CHILD_LIST_CONFIG listConfig;

WDF_CHILD_LIST_CONFIG_INIT(
                           &listConfig,
                           sizeof(PDO_IDENTIFICATION_DESCRIPTION),
                           My_EvtDeviceListCreatePdo
                           );

listConfig.AddressDescriptionSize = sizeof(PDO_ADDRESS_DESCRIPTION);

listConfig.EvtChildListScanForChildren = My_EvtChildListScanForChildren;

listConfig.EvtChildListIdentificationDescriptionDuplicate = My_EvtChildListIdentificationDescriptionDuplicate;
listConfig.EvtChildListIdentificationDescriptionCompare = My_EvtChildListIdentificationDescriptionCompare;
listConfig.EvtChildListIdentificationDescriptionCleanup = My_EvtChildListIdentificationDescriptionCleanup;

status = WdfChildListCreate(
                            device,
                            &listConfig,
                            WDF_NO_OBJECT_ATTRIBUTES,
                            &ParentDeviceContext->ChildList
                            );
if (!NT_SUCCESS(status)) {
    return status;
}

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
заголовка wdfchildlist.h (включая Wdf.h)
библиотеки Wdf01000.sys (см. управление версиями библиотеки Платформы).)
IRQL PASSIVE_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList