Функция 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, если операция завершается успешно. В противном случае этот метод может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Недопустимый входной параметр. |
|
Не удалось выделить объект. |
Этот метод также может возвращать другие значения 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) |