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