Partilhar via


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ção 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.

Valor de retorno

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

Código de retorno Descrição
STATUS_INVALID_PARAMETER
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 .

Uma verificação de bugs do sistema ocorre se o driver fornece um identificador de objeto inválido.

Observações

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 do dispositivo da estrutura que representa o dispositivo filho. O driver não deve excluir o objeto do dispositivo da estrutura depois que WdfFdoAddStaticChild retorna 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
da Plataforma de Destino Universal
versão mínima do KMDF 1.0
cabeçalho wdffdo.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte o Controle de Versão da Biblioteca da Estrutura.)
IRQL <= DISPATCH_LEVEL
regras de conformidade de DDI AddPdoToStaticChildList(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte também

WdfChildListAddOrUpdateChildDescriptionAsPresent

WdfDeviceCreate

WdfPdoInitAllocate