Funzione WdfFdoAddStaticChild (wdffdo.h)

[Si applica solo a KMDF]

Il metodo WdfFdoAddStaticChild aggiunge un dispositivo specificato all'elenco dei dispositivi figlio identificati dall'enumerazione statica.

Sintassi

NTSTATUS WdfFdoAddStaticChild(
  [in] WDFDEVICE Fdo,
  [in] WDFDEVICE Child
);

Parametri

[in] Fdo

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

[in] Child

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

Valore restituito

Se l'operazione ha esito positivo, il metodo restituisce STATUS_SUCCESS. I valori restituiti aggiuntivi includono:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
Fdo non è un handle per un oggetto dispositivo del driver di funzione.
 

Il metodo potrebbe restituire anche altri valori NTSTATUS.

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

Commenti

I driver che usano l'enumerazione del bus statico possono chiamare WdfFdoAddStaticChild. Per altre informazioni sugli elenchi figlio statici, vedere Enumerazione dei dispositivi in un bus.

Se WdfFdoAddStaticChild restituisce un valore NTSTATUS che NT_SUCCESS valuta come FALSE, il driver deve chiamare WdfObjectDelete per eliminare l'oggetto dispositivo framework che rappresenta il dispositivo figlio. Il driver non deve eliminare l'oggetto del dispositivo framework dopo che WdfFdoAddStaticChild restituisce STATUS_SUCCESS.

Esempio

L'esempio di codice seguente crea un oggetto dispositivo framework che rappresenta un nuovo dispositivo figlio e aggiunge il dispositivo figlio all'elenco di elementi figlio del dispositivo padre. Per l'esempio di codice completo, vedere il driver di esempio KbFiltr .

NTSTATUS  status;
PWDFDEVICE_INIT  pDeviceInit = NULL;
WDFDEVICE  hChild = NULL;
WDF_OBJECT_ATTRIBUTES  pdoAttributes;

pDeviceInit = WdfPdoInitAllocate(Device);
if (pDeviceInit == NULL) {
    status = STATUS_INSUFFICIENT_RESOURCES;
    goto Cleanup;
}
...
status = WdfDeviceCreate(
                         &pDeviceInit,
                         &pdoAttributes,
                         &hChild
                         );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(pDeviceInit);
    pDeviceInit = NULL;
    goto Cleanup;
}
...
status = WdfFdoAddStaticChild(
                              Device,
                              hChild
                              );
if (!NT_SUCCESS(status)) {
    goto Cleanup;
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdffdo.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate