Compartir a través de


EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY función de devolución de llamada (wdfchildlist.h)

[Solo se aplica a KMDF]

La función de devolución de llamada de eventos EvtChildListIdentificationDescriptionCopy de un controlador copia una descripción de identificación secundaria de una ubicación especificada a otra.

Sintaxis

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

Identificador de un objeto de lista secundaria del marco.

[in] SourceIdentificationDescription

Puntero a una estructura de WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER que identifica la ubicación de origen de la descripción de identificación secundaria.

[out] DestinationIdentificationDescription

Puntero a una estructura de WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER que identifica la ubicación de destino de la descripción de identificación secundaria.

Valor devuelto

None

Observaciones

Si un controlador de bus usa una enumeración dinámica, puede registrar una función de devolución de llamada EvtChildListIdentificationDescriptionCopy llamando a WdfFdoInitSetDefaultChildListConfig o WdfChildListCreate.

El marco copia información de una descripción de identificación proporcionada por el controlador a otra cuando necesita actualizar una descripción existente con nueva información, o cuando necesita pasar el contenido de una descripción de identificación al controlador.

La función de devolución de llamada EvtChildListIdentificationDescriptionCopy debe copiar el contenido de una descripción de origen en una descripción de destino. Un controlador debe proporcionar esta función de devolución de llamada si el marco no puede llamar a RtlCopyMemory para copiar la descripción de la identificación. (El marco no puede llamar a RtlCopyMemory si la descripción contiene punteros a memoria adicional).

Si el controlador no proporciona una función de devolución de llamada EvtChildListIdentificationDescriptionCopy , el marco copia las descripciones de identificación llamando a RtlCopyMemory.

En los pasos siguientes se describe un escenario posible:

  1. El controlador que recorre una lista secundaria llama a WdfChildListRetrieveNextDevice. El controlador proporciona una estructura de WDF_CHILD_RETRIEVE_INFO para que pueda recibir la descripción de identificación del dispositivo secundario.
  2. El marco llama a la función de devolución de llamada EvtChildListIdentificationDescriptionCopy (si existe) o RtlCopyMemory para copiar la descripción de identificación del dispositivo. El origen de la operación de copia es la copia interna del marco de la descripción. El destino es la memoria que el controlador asignó e identificó en su estructura de WDF_CHILD_RETRIEVE_INFO.
El marco puede usar RtlCopyMemory para copiar una descripción de identificación, si la descripción consta de una sola estructura con un tamaño predeterminado especificado por el miembro IdentificationDescriptionSize de la estructura WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER . Sin embargo, a veces la descripción también debe contener información adicional almacenada en memoria asignada dinámicamente. En este caso, normalmente definirá una estructura de descripción para que un miembro apunte a la memoria asignada dinámicamente y el controlador debe proporcionar una función de devolución de llamada EvtChildListIdentificationDescriptionCopy . La función de devolución de llamada debe hacer lo siguiente:
  1. En las estructuras SourceIdentificationDescription y DestinationIdentificationDescription de la función de devolución de llamada, busque los punteros a la memoria asignada dinámicamente.
  2. Copie la memoria asignada dinámicamente desde el origen al destino mediante los punteros.
  3. Copie otros miembros de estructura de la estructura SourceIdentificationDescription de la función de devolución de llamada en la estructura DestinationIdentificationDescription de la función de devolución de llamada.
El único método de objeto child-list del marco al que puede llamar la función de devolución de llamada EvtChildListIdentificationDescriptionCopy de un controlador es WdfChildListGetDevice.

El marco adquiere un bloqueo de objeto de lista secundaria interno antes de llamar a la función de devolución de llamada EvtChildListIdentificationDescriptionCopy . La función de devolución de llamada solo debe realizar operaciones relacionadas con la operación de copia, como llamar a métodos de objeto de memoria del marco y acceder al espacio de contexto del objeto. No debe llamar a métodos que accedan a otros controladores.

Si el controlador proporciona una función de devolución de llamada EvtChildListIdentificationDescriptionCopy , también podría necesitar las funciones de devolución de llamada EvtChildListIdentificationDescriptionDuplicate, EvtChildListIdentificationDescriptionCompare y EvtChildListIdentificationDescriptionCleanup .

Para obtener más información sobre la enumeración dinámica, vea Enumerar los dispositivos en un bus.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfchildlist.h (incluya Wdf.h)
IRQL <= DISPATCH_LEVEL

Consulte también

EvtChildListIdentificationDescriptionCleanup

EvtChildListIdentificationDescriptionCompare

EvtChildListIdentificationDescriptionDuplicate

WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER

WdfChildListCreate

WdfChildListGetDevice

WdfFdoInitSetDefaultChildListConfig