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:
- Chiamare WdfFdoLockStaticChildListForIteration per bloccare l'elenco figlio.
- Chiamare ripetutamente WdfFdoRetrieveNextStaticChild per ottenere gli elementi nell'elenco, uno alla volta, fino a quando il metodo non restituisce NULL.
- Chiama WdfFdoUnlockStaticChildListFromIteration per sbloccare l'elenco figlio.
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) |