Compartir a través de


Función WdfFdoAddStaticChild (wdffdo.h)

[Solo se aplica a KMDF]

El método WdfFdoAddStaticChild agrega un dispositivo especificado a la lista de dispositivos secundarios de un controlador de función que se han identificado mediante la enumeración estática.

Sintaxis

NTSTATUS WdfFdoAddStaticChild(
  [in] WDFDEVICE Fdo,
  [in] WDFDEVICE Child
);

Parámetros

[in] Fdo

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

[in] Child

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

Valor devuelto

Si la operación se realiza correctamente, el método devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:

Código de retorno Descripción
STATUS_INVALID_PARAMETER
Fdo no es un identificador para el objeto de dispositivo del controlador de función.
 

El método también puede devolver otros valores de NTSTATUS.

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

Observaciones

Los controladores que usan la enumeración de bus estático pueden llamar a WdfFdoAddStaticChild. Para obtener más información sobre las listas secundarias estáticas, vea Enumerar los dispositivos en un bus.

Si WdfFdoAddStaticChild devuelve un valor NTSTATUS que NT_SUCCESS se evalúa como FALSE, el controlador debe llamar a WdfObjectDelete para eliminar el objeto de dispositivo del marco que representa el dispositivo secundario. El controlador no debe eliminar el objeto de dispositivo de marco después de WdfFdoAddStaticChild devuelve STATUS_SUCCESS.

Ejemplos

En el ejemplo de código siguiente se crea un objeto de dispositivo de marco que representa un nuevo dispositivo secundario y se agrega el dispositivo secundario a la lista de elementos secundarios del dispositivo primario. Para obtener el ejemplo de código completo, consulte el controlador de ejemplo kbFiltr.

NTSTATUS  status;
PWDFDEVICE_INIT  pDeviceInit = NULL;
WDFDEVICE  hChild = NULL;
WDF_OBJECT_ATTRIBUTES  pdoAttributes;

pDeviceInit = WdfPdoInitAllocate(Device);
if (pDeviceInit == NULL) {
    status = STATUS_INSUFFICIENT_RESOURCES;
    goto Cleanup;
}
...
status = WdfDeviceCreate(
                         &pDeviceInit,
                         &pdoAttributes,
                         &hChild
                         );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(pDeviceInit);
    pDeviceInit = NULL;
    goto Cleanup;
}
...
status = WdfFdoAddStaticChild(
                              Device,
                              hChild
                              );
if (!NT_SUCCESS(status)) {
    goto Cleanup;
}

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
encabezado wdffdo.h (incluya Wdf.h)
Biblioteca Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCrear

WdfPdoInitAllocate