Función WdfFdoRetrieveNextStaticChild (wdffdo.h)
[Solo se aplica a KMDF]
El método WdfFdoRetrieveNextStaticChild recupera un identificador para el siguiente objeto de dispositivo de marco en una lista de dispositivos secundarios.
Sintaxis
WDFDEVICE WdfFdoRetrieveNextStaticChild(
[in] WDFDEVICE Fdo,
[in, optional] WDFDEVICE PreviousChild,
[in] ULONG Flags
);
Parámetros
[in] Fdo
Identificador de un objeto de dispositivo de marco que representa el dispositivo primario.
[in, optional] PreviousChild
Identificador de un objeto de dispositivo de marco que representa el dispositivo secundario devuelto por una llamada anterior a WdfFdoRetrieveNextStaticChild. Para la primera llamada a WdfFdoRetrieveNextStaticChild, este valor debe ser NULL.
[in] Flags
Valor de enumerador con tipo WDF_RETRIEVE_CHILD_FLAGS que identifica el tipo de dispositivos secundarios que el método debe recuperar. Este parámetro no puede ser cero.
Valor devuelto
Si la operación se realiza correctamente, el método devuelve un identificador a un objeto de dispositivo de marco. De lo contrario, devuelve NULL.
Se produce una comprobación de errores del sistema si el controlador proporciona un identificador de objeto no válido.
Comentarios
Los controladores de bus que usan la enumeración de bus estático pueden llamar a WdfFdoRetrieveNextStaticChild.
Para recuperar los elementos de una lista de dispositivos secundarios, el controlador debe:
- Llame a WdfFdoLockStaticChildListForIteration para bloquear la lista secundaria.
- Llame repetidamente a WdfFdoRetrieveNextStaticChild para obtener los elementos de la lista, de uno en uno, hasta que el método devuelva NULL.
- Llame a WdfFdoUnlockStaticChildListFromIteration para desbloquear la lista secundaria.
Ejemplos
En el ejemplo de código siguiente se busca en una lista secundaria estática hasta que encuentre un dispositivo secundario con un número de serie que coincida con un valor específico. Para ver otros usos de ejemplo de WdfFdoRetrieveNextStaticChild, consulte el controlador de bus de ejemplo de toaster .
PPDO_DEVICE_DATA pdoData;
WDFDEVICE hChild;
NTSTATUS status = STATUS_INVALID_PARAMETER;
WdfFdoLockStaticChildListForIteration(Device);
while ((hChild = WdfFdoRetrieveNextStaticChild(
Device,
hChild,
WdfRetrieveAddedChildren
)) != NULL) {
//
// Obtain device object context data and check the
// stored serial number.
//
pdoData = PdoGetData(hChild);
if (SerialNo == pdoData->SerialNo) {
status = STATUS_SUCCESS;
WdfPdoRequestEject(hChild);
break;
}
}
WdfFdoUnlockStaticChildListFromIteration(Device);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | wdffdo.h (incluir Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf) |