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
STATUS_INVALID_PARAMETER
Parametro di input non valido.
STATUS_INSUFFICIENT_RESOURCES
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)

Vedi anche

WDF_CHILD_LIST_CONFIG

WDF_CHILD_LIST_CONFIG_INIT

WdfFdoGetDefaultChildList