Compartilhar via


EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY função de retorno de chamada (wdfchildlist.h)

[Aplica-se somente ao KMDF]

A função de retorno de chamada de evento EvtChildListIdentificationDescriptionCopy de um driver copia uma descrição de identificação filho de um local especificado para outro.

Sintaxe

EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY EvtWdfChildListIdentificationDescriptionCopy;

void EvtWdfChildListIdentificationDescriptionCopy(
  [in]  WDFCHILDLIST ChildList,
  [in]  PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER SourceIdentificationDescription,
  [out] PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER DestinationIdentificationDescription
)
{...}

Parâmetros

[in] ChildList

Um identificador para um objeto de lista filho da estrutura.

[in] SourceIdentificationDescription

Um ponteiro para uma estrutura WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER que identifica o local de origem da descrição de identificação do filho.

[out] DestinationIdentificationDescription

Um ponteiro para uma estrutura WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER que identifica o local de destino da descrição de identificação filho.

Retornar valor

Nenhum

Comentários

Se um driver de barramento estiver usando enumeração dinâmica, ele poderá registrar uma função de retorno de chamada EvtChildListIdentificationDescriptionCopy chamando WdfFdoInitSetDefaultChildListConfig ou WdfChildListCreate.

A estrutura copia informações de uma descrição de identificação fornecida pelo driver para outra quando precisa atualizar uma descrição existente com novas informações ou quando precisa passar o conteúdo de uma descrição de identificação para o driver.

A função de retorno de chamada EvtChildListIdentificationDescriptionCopy deve copiar o conteúdo de uma descrição de origem para uma descrição de destino. Um driver deverá fornecer essa função de retorno de chamada se a estrutura não puder chamar RtlCopyMemory para copiar a descrição de identificação. (A estrutura não poderá chamar RtlCopyMemory se a descrição contiver ponteiros para memória adicional.)

Se o driver não fornecer uma função de retorno de chamada EvtChildListIdentificationDescriptionCopy , a estrutura copiará as descrições de identificação chamando RtlCopyMemory.

As etapas a seguir descrevem um cenário possível:

  1. O driver que está atravessando uma lista filho chama WdfChildListRetrieveNextDevice. O driver fornece uma estrutura WDF_CHILD_RETRIEVE_INFO para que possa receber a descrição de identificação do dispositivo filho.
  2. A estrutura chama a função de retorno de chamada EvtChildListIdentificationDescriptionCopy (se existir) ou RtlCopyMemory para copiar a descrição de identificação do dispositivo. A origem da operação de cópia é a cópia interna da estrutura da descrição. O destino é a memória que o driver alocou e identificou em sua estrutura WDF_CHILD_RETRIEVE_INFO.
A estrutura pode usar RtlCopyMemory para copiar uma descrição de identificação, se a descrição consistir em uma única estrutura com um tamanho predeterminado especificado pelo membro IdentificationDescriptionSize da estrutura WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER . No entanto, às vezes, a descrição também deve conter informações adicionais armazenadas na memória alocada dinamicamente. Nesse caso, você normalmente definirá uma estrutura de descrição para que um membro aponte para a memória alocada dinamicamente e seu driver deve fornecer uma função de retorno de chamada EvtChildListIdentificationDescriptionCopy . A função de retorno de chamada deve fazer o seguinte:
  1. Nas estruturas SourceIdentificationDescription e DestinationIdentificationDescription da função de retorno de chamada, localize os ponteiros para a memória alocada dinamicamente.
  2. Copie a memória alocada dinamicamente da origem para o destino, usando os ponteiros .
  3. Copie outros membros da estrutura SourceIdentificationDescription da função de retorno de chamada para a estrutura DestinationIdentificationDescription da função de retorno de chamada.
O único método de objeto de lista filho da estrutura que a função de retorno de chamada EvtChildListIdentificationDescriptionCopy de um driver pode chamar é WdfChildListGetDevice.

A estrutura adquire um bloqueio de objeto de lista filho interno antes de chamar a função de retorno de chamada EvtChildListIdentificationDescriptionCopy . A função de retorno de chamada só deve executar operações relacionadas à operação de cópia, como chamar métodos de objeto de memória da estrutura e acessar o espaço de contexto do objeto. Ele não deve chamar métodos que acessam outros drivers.

Se o driver fornecer uma função de retorno de chamada EvtChildListIdentificationDescriptionCopy , ele também poderá precisar de funções de retorno de chamada EvtChildListIdentificationDescriptionDuplicate, EvtChildListIdentificationDescriptionCompare e EvtChildListIdentificationDescriptionCleanup .

Para obter mais informações sobre enumeração dinâmica, consulte Enumerando os dispositivos em um barramento.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfchildlist.h (inclua Wdf.h)
IRQL <= DISPATCH_LEVEL

Confira também

EvtChildListIdentificationDescriptionCleanup

EvtChildListIdentificationDescriptionCompare

EvtChildListIdentificationDescriptionDuplicate

WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER

WdfChildListCreate

WdfChildListGetDevice

WdfFdoInitSetDefaultChildListConfig