Compartilhar via


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
STATUS_INVALID_PARAMETER
Um parâmetro de entrada era inválido.
STATUS_INSUFFICIENT_RESOURCES
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)

Confira também

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList