Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[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 |
|---|---|
|
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) |