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