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:

  1. Llame a WdfFdoLockStaticChildListForIteration para bloquear la lista secundaria.
  2. Llame repetidamente a WdfFdoRetrieveNextStaticChild para obtener los elementos de la lista, de uno en uno, hasta que el método devuelva NULL.
  3. Llame a WdfFdoUnlockStaticChildListFromIteration para desbloquear la lista secundaria.
Para obtener más información sobre las listas secundarias estáticas, vea Enumerar los dispositivos en un bus.

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)

Consulte también

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration