Função WdfChildListCreate (wdfchildlist.h)
[Aplica-se somente ao KMDF]
O método WdfChildListCreate cria uma lista filho para um dispositivo pai especificado.
Sintaxe
NTSTATUS WdfChildListCreate(
[in] WDFDEVICE Device,
[in] PWDF_CHILD_LIST_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
[out] WDFCHILDLIST *ChildList
);
Parâmetros
[in] Device
Um identificador para um objeto de dispositivo de estrutura que representa o dispositivo pai.
[in] Config
Um ponteiro para uma estrutura WDF_CHILD_LIST_CONFIG que contém informações de configuração fornecidas pelo driver para a lista filho.
[in, optional] ChildListAttributes
Um ponteiro para uma estrutura WDF_OBJECT_ATTRIBUTES que contém atributos de objeto fornecidos pelo driver para o objeto de lista filho da estrutura. (O membro ParentObject da estrutura deve ser NULL.)
[out] ChildList
Um ponteiro para um local alocado pelo chamador que recebe um identificador para um objeto de lista filho da estrutura.
Retornar valor
WdfChildListCreate retorna STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE, se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro de entrada era inválido. |
|
Não foi possível alocar um objeto. |
Esse método também pode retornar outros valores NTSTATUS.
Um bug do sistema marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
A estrutura cria uma lista filho padrão para cada objeto de dispositivo de estrutura que representa um FDO (objeto de dispositivo funcional). Para usar a lista filho padrão, o driver chama WdfFdoGetDefaultChildList. Se o driver exigir listas filho adicionais, ele poderá chamar WdfChildListCreate para criá-las.
O pai de cada objeto de lista filho é o objeto de dispositivo de estrutura do dispositivo. O driver não pode alterar esse pai e o membro ParentObject ou a estrutura WDF_OBJECT_ATTRIBUTES devem ser NULL.
O driver não pode excluir o objeto de lista filho que WdfChildListCreate cria. A estrutura exclui o objeto no momento apropriado.
Para obter mais informações sobre listas filho, consulte Enumeração dinâmica.
Exemplos
O exemplo de código a seguir inicializa uma estrutura WDF_CHILD_LIST_CONFIG e chama 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;
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Cabeçalho | wdfchildlist.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.) |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |