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 |
---|---|
|
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) |