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 identificados por 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 devuelto Descripción
STATUS_INVALID_PARAMETER
Fdo no es un identificador para el objeto de dispositivo de un controlador de función.
 

El método también puede 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

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 de marco que representa el dispositivo secundario. El controlador no debe eliminar el objeto de dispositivo del marco después de que WdfFdoAddStaticChild devuelva 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdffdo.h (incluya Wdf.h)
Library 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

WdfDeviceCreate

WdfPdoInitAllocate