Função WdfFdoAddStaticChild (wdffdo.h)

[Aplica-se somente ao KMDF]

O método WdfFdoAddStaticChild adiciona um dispositivo especificado à lista de dispositivos filho de um driver de funções que foram identificados por enumeração estática.

Sintaxe

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

Parâmetros

[in] Fdo

Um identificador para um objeto de dispositivo de estrutura que representa o dispositivo pai.

[in] Child

Um identificador para um objeto de dispositivo de estrutura que representa o dispositivo filho.

Retornar valor

Se a operação for bem-sucedida, o método retornará STATUS_SUCCESS. Os valores retornados adicionais incluem:

Código de retorno Descrição
STATUS_INVALID_PARAMETER
O Fdo não é um identificador para o objeto de dispositivo de um driver de função.
 

O método também pode retornar outros valores NTSTATUS.

Um bug do sistema marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Os drivers que usam enumeração de barramento estático podem chamar WdfFdoAddStaticChild. Para obter mais informações sobre listas filho estáticas, consulte Enumerando os dispositivos em um barramento.

Se WdfFdoAddStaticChild retornar um valor NTSTATUS que NT_SUCCESS avaliado como FALSE, o driver deverá chamar WdfObjectDelete para excluir o objeto de dispositivo de estrutura que representa o dispositivo filho. O driver não deve excluir o objeto de dispositivo da estrutura depois que WdfFdoAddStaticChild retornar STATUS_SUCCESS.

Exemplos

O exemplo de código a seguir cria um objeto de dispositivo de estrutura que representa um novo dispositivo filho e adiciona o dispositivo filho à lista de filhos do dispositivo pai. Para obter o exemplo de código completo, consulte o driver de exemplo 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;
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdffdo.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL <= DISPATCH_LEVEL
Regras de conformidade de DDI AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate