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 |
---|---|
|
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) |