Funzione WdfFdoRetrieveNextStaticChild (wdffdo.h)

[Si applica solo a KMDF]

Il metodo WdfFdoRetrieveNextStaticChild recupera un handle per l'oggetto dispositivo framework successivo in un elenco di dispositivi figlio.

Sintassi

WDFDEVICE WdfFdoRetrieveNextStaticChild(
  [in]           WDFDEVICE Fdo,
  [in, optional] WDFDEVICE PreviousChild,
  [in]           ULONG     Flags
);

Parametri

[in] Fdo

Handle per un oggetto dispositivo framework che rappresenta il dispositivo padre.

[in, optional] PreviousChild

Handle per un oggetto dispositivo framework che rappresenta il dispositivo figlio restituito da una chiamata precedente a WdfFdoRetrieveNextStaticChild. Per la prima chiamata a WdfFdoRetrieveNextStaticChild, questo valore deve essere NULL.

[in] Flags

Valore dell'enumeratore tipizzato WDF_RETRIEVE_CHILD_FLAGS che identifica il tipo di dispositivi figlio che il metodo deve recuperare. Questo parametro non può essere zero.

Valore restituito

Se l'operazione ha esito positivo, il metodo restituisce un handle a un oggetto dispositivo framework. In caso contrario, restituisce NULL.

Un controllo dei bug di sistema si verifica se il driver fornisce un handle di oggetto non valido.

Commenti

I driver del bus che usano l'enumerazione bus statica possono chiamare WdfFdoRetrieveNextStaticChild.

Per recuperare gli elementi in un elenco di dispositivi figlio, il driver deve:

  1. Chiamare WdfFdoLockStaticChildListForIteration per bloccare l'elenco figlio.
  2. Chiamare ripetutamente WdfFdoRetrieveNextStaticChild per ottenere gli elementi nell'elenco, uno alla volta, fino a quando il metodo non restituisce NULL.
  3. Chiama WdfFdoUnlockStaticChildListFromIteration per sbloccare l'elenco figlio.
Per altre informazioni sugli elenchi figlio statici, vedere Enumerazione dei dispositivi in un bus.

Esempio

Nell'esempio di codice seguente viene eseguita una ricerca in un elenco figlio statico finché non viene trovato un dispositivo figlio con un numero di serie corrispondente a un valore specifico. Per altri usi di esempio di WdfFdoRetrieveNextStaticChild, vedere il driver del bus di esempio Tostapane .

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdffdo.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoDeviceInitAPI(kmdf)

Vedi anche

WdfFdoLockStaticChildListForIteration

WdfFdoUnlockStaticChildListFromIteration