Funzione WdfChildListRetrievePdo (wdfchildlist.h)

[Si applica solo a KMDF]

Il metodo WdfChildListRetrievePdo restituisce un handle all'oggetto dispositivo framework associato a una descrizione figlio specificata in un elenco figlio.

Sintassi

WDFDEVICE WdfChildListRetrievePdo(
  [in]      WDFCHILDLIST             ChildList,
  [in, out] PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
);

Parametri

[in] ChildList

Handle per un oggetto elenco figlio.

[in, out] RetrieveInfo

Puntatore a una struttura di WDF_CHILD_RETRIEVE_INFO allocata dal driver inizializzata dal driver con la descrizione di identificazione dell'elemento figlio da recuperare.

Valore restituito

WdfChildListRetrievePdo restituisce un handle all'oggetto dispositivo framework se il dispositivo figlio specificato si trova nell'elenco figlio, se esiste un oggetto dispositivo framework per il dispositivo figlio e se il framework ha segnalato l'esistenza del dispositivo al gestore PnP. In caso contrario, il metodo restituisce NULL. Il framework restituisce informazioni sullo stato aggiuntive nel membro Status della struttura WDF_CHILD_RETRIEVE_INFO .

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

Commenti

Prima di chiamare WdfChildListRetrievePdo, il driver deve inserire una descrizione di identificazione in una struttura WDF_CHILD_RETRIEVE_INFO .

Il metodo WdfChildListRetrievePdo attraversa l'elenco figlio specificato, cercando un elemento figlio con una descrizione di identificazione corrispondente a quella fornita dal driver nella struttura WDF_CHILD_RETRIEVE_INFO. Se il framework trova una corrispondenza e se l'elemento figlio ha una descrizione dell'indirizzo, il framework compila la descrizione dell'indirizzo della struttura.

Assicurarsi di eseguire il wrapping di questa chiamata con WdfChildListBeginIteration e WdfChildListEndIteration per proteggere il chiamante dalla rimozione improvvisa di PnP del PDO in un altro thread.

Per altre informazioni sugli elenchi figlio, vedere Enumerazione dinamica.

Esempio

Nell'esempio di codice seguente viene eseguita una ricerca in un elenco figlio per trovare un dispositivo figlio la cui descrizione di identificazione contiene un numero di serie specificato e ottiene un handle per l'oggetto dispositivo che rappresenta il dispositivo figlio.

WDF_CHILD_LIST_ITERATOR iterator;
PDO_IDENTIFICATION_DESCRIPTION description;
WDF_CHILD_RETRIEVE_INFO info;
WDFDEVICE hChild;

WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT(
                                                 &description.Header,
                                                 sizeof(description)
                                                 );

description.SerialNo = DeviceSerialNumber;

WDF_CHILD_RETRIEVE_INFO_INIT(
                             &info,
                             &description.Header
                             );

WDF_CHILD_LIST_ITERATOR_INIT(&iterator, WdfRetrieveAllChildren);
WdfChildListBeginIteration(childList, &iterator);

hChild = WdfChildListRetrievePdo(
                                 childList,
                                 &info
                                 );

... access hChild ...

WdfChildListEndIteration(childList, &iterator);

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfchildlist.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)

Vedi anche

WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_INIT

WDF_CHILD_RETRIEVE_INFO

WDF_CHILD_RETRIEVE_INFO_INIT