Compartir a través de


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_FLAGSque 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.

Observaciones

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 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 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Consulte también

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration