Compartir a través de


Función WdfChildListCreate (wdfchildlist.h)

[Solo se aplica a KMDF]

El método WdfChildListCreate crea una lista secundaria para un dispositivo primario especificado.

Sintaxis

NTSTATUS WdfChildListCreate(
  [in]           WDFDEVICE              Device,
  [in]           PWDF_CHILD_LIST_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
  [out]          WDFCHILDLIST           *ChildList
);

Parámetros

[in] Device

Identificador de un objeto de dispositivo de marco que representa el dispositivo primario.

[in] Config

Puntero a una estructura WDF_CHILD_LIST_CONFIG que contiene información de configuración proporcionada por el controlador para la lista secundaria.

[in, optional] ChildListAttributes

Puntero a una estructura WDF_OBJECT_ATTRIBUTES que contiene atributos de objeto proporcionados por el controlador para el objeto de lista secundaria del marco. (El miembro ParentObject de la estructura debe ser NULL).

[out] ChildList

Puntero a una ubicación asignada por el autor de la llamada que recibe un identificador de un objeto de lista secundaria del marco.

Valor devuelto

WdfChildListCreate devuelve STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE, si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
Un parámetro de entrada no era válido.
STATUS_INSUFFICIENT_RESOURCES
No se pudo asignar un objeto.
 

Este método también podría devolver otros valores NTSTATUS.

Se produce una comprobación de errores del sistema si el controlador proporciona un identificador de objeto no válido.

Comentarios

El marco crea una lista secundaria predeterminada para cada objeto de dispositivo de marco que representa un objeto de dispositivo funcional (FDO). Para usar la lista secundaria predeterminada, el controlador llama a WdfFdoGetDefaultChildList. Si el controlador requiere listas secundarias adicionales, puede llamar a WdfChildListCreate para crearlas.

El elemento primario de cada objeto de lista secundaria es el objeto de dispositivo marco del dispositivo. El controlador no puede cambiar este elemento primario y el miembro ParentObject o la estructura WDF_OBJECT_ATTRIBUTES deben ser NULL.

El controlador no puede eliminar el objeto child-list que WdfChildListCreate crea. El marco elimina el objeto en el momento adecuado.

Para obtener más información sobre las listas secundarias, vea Enumeración dinámica.

Ejemplos

En el ejemplo de código siguiente se inicializa una estructura de WDF_CHILD_LIST_CONFIG y, a continuación, se llama a 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfchildlist.h (incluya Wdf.h)
Library Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList