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


Функция 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 , содержащую предоставленные драйвером атрибуты объекта для объекта дочернего списка платформы. (Элемент ParentObject структуры должен иметь значение NULL.)

[out] ChildList

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

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

WdfChildListCreate возвращает STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(status) равно 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