Funzione WdfChildListCreate (wdfchildlist.h)
[Si applica solo a KMDF]
Il metodo WdfChildListCreate crea un elenco figlio per un dispositivo padre specificato.
Sintassi
NTSTATUS WdfChildListCreate(
[in] WDFDEVICE Device,
[in] PWDF_CHILD_LIST_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
[out] WDFCHILDLIST *ChildList
);
Parametri
[in] Device
Handle per un oggetto dispositivo framework che rappresenta il dispositivo padre.
[in] Config
Puntatore a una struttura WDF_CHILD_LIST_CONFIG contenente le informazioni di configurazione fornite dal driver per l'elenco figlio.
[in, optional] ChildListAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene gli attributi oggetto forniti dal driver per l'oggetto framework child-list. Il membro ParentObject della struttura deve essere NULL.
[out] ChildList
Puntatore a una posizione allocata dal chiamante che riceve un handle per un oggetto elenco figlio del framework.
Valore restituito
WdfChildListCreate restituisce STATUS_SUCCESS o un altro valore di stato per il quale NT_SUCCESS(status) è uguale a TRUE, se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
Parametro di input non valido. |
|
Impossibile allocare un oggetto. |
Questo metodo potrebbe anche restituire altri valori NTSTATUS.
Un controllo dei bug di sistema si verifica se il driver fornisce un handle di oggetto non valido.
Commenti
Il framework crea un elenco figlio predefinito per ogni oggetto dispositivo framework che rappresenta un oggetto dispositivo funzionale.The framework create a default child list for each framework device object that rappresenta a functional device object (FDO). Per usare l'elenco figlio predefinito, il driver chiama WdfFdoGetDefaultChildList. Se il driver richiede elenchi figlio aggiuntivi, può chiamare WdfChildListCreate per crearli.
L'elemento padre di ogni oggetto elenco figlio è l'oggetto dispositivo framework del dispositivo. Il driver non può modificare questo elemento padre e il membro ParentObject o la struttura WDF_OBJECT_ATTRIBUTES deve essere NULL.
Il driver non può eliminare l'oggetto elenco figlio creato da WdfChildListCreate . Il framework elimina l'oggetto al momento corretto.
Per altre informazioni sugli elenchi figlio, vedere Enumerazione dinamica.
Esempio
Nell'esempio di codice seguente viene inizializzata una struttura WDF_CHILD_LIST_CONFIG e quindi viene chiamato WdfChildListCreate.
WDF_CHILD_LIST_CONFIG listConfig;
WDF_CHILD_LIST_CONFIG_INIT(
&listConfig,
sizeof(PDO_IDENTIFICATION_DESCRIPTION),
My_EvtDeviceListCreatePdo
);
listConfig.AddressDescriptionSize = sizeof(PDO_ADDRESS_DESCRIPTION);
listConfig.EvtChildListScanForChildren = My_EvtChildListScanForChildren;
listConfig.EvtChildListIdentificationDescriptionDuplicate = My_EvtChildListIdentificationDescriptionDuplicate;
listConfig.EvtChildListIdentificationDescriptionCompare = My_EvtChildListIdentificationDescriptionCompare;
listConfig.EvtChildListIdentificationDescriptionCleanup = My_EvtChildListIdentificationDescriptionCleanup;
status = WdfChildListCreate(
device,
&listConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&ParentDeviceContext->ChildList
);
if (!NT_SUCCESS(status)) {
return status;
}
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 | PASSIVE_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |