Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[Aplica-se somente ao KMDF]
O método WdfDpcCreate cria um objeto DPC de estrutura e registra uma função de retorno de chamada EvtDpcFunc.
Sintaxe
NTSTATUS WdfDpcCreate(
[in] PWDF_DPC_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFDPC *Dpc
);
Parâmetros
[in] Config
Um ponteiro para uma estrutura de WDF_DPC_CONFIG alocada pelo chamador.
[in] Attributes
Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que especifica atributos para o novo objeto DPC.
[out] Dpc
Um ponteiro para um local que recebe um identificador para o novo objeto DPC da estrutura.
Valor de retorno
WdfDpcCreate retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, o método poderá retornar um dos seguintes valores:
| Código de retorno | Descrição |
|---|---|
|
Um parâmetro inválido foi especificado. |
|
Não foi possível alocar um objeto DPC. |
|
Um objeto pai não foi especificado na estrutura WDF_OBJECT_ATTRIBUTES. |
|
O ParentObject membro da estrutura WDF_OBJECT_ATTRIBUTES não faz referência a um objeto de dispositivo de estrutura ou a um objeto cuja cadeia de pais leva a um objeto de dispositivo de estrutura. |
|
O membro AutomaticSerialization da estrutura WDF_DPC_CONFIG está definido como TRUE, mas o nível de execução do objeto pai está definido como WdfExecutionLevelPassive. |
Para obter uma lista de outros valores retornados que o método WdfDpcCreate pode retornar, consulte Framework Object Creation Errors.
Esse método também pode retornar outros valores NTSTATUS .
Observações
Um driver normalmente chama WdfDpcCreate de dentro de sua função de retorno de chamada EvtDriverDeviceAdd.
Quando um driver cria um objeto DPC, ele deve especificar um objeto pai no ParentObject membro da estrutura WDF_OBJECT_ATTRIBUTES. O objeto pai pode ser um objeto de dispositivo de estrutura ou qualquer objeto cuja cadeia de pais leva a um objeto de dispositivo de estrutura. A estrutura excluirá o objeto DPC quando ele excluir o objeto do dispositivo.
Chamar WdfDpcCreate cria um objeto DPC de estrutura e registra uma função de retorno de chamada EvtDpcFunc. Para agendar a execução da função de retorno de chamada, o driver deve chamar WdfDpcEnqueue.
Se o driver fornecer EvtCleanupCallback ou EvtDestroyCallback funções de retorno de chamada para o objeto de temporizador da estrutura, observe que a estrutura chama essas funções de retorno de chamada em IRQL = PASSIVE_LEVEL.
Para obter mais informações sobre como usar objetos DPC, consulte Manutenção de umde Interrupção.
Exemplos
O exemplo de código a seguir inicializa uma estrutura de WDF_DPC_CONFIG_INIT e cria um objeto DPC.
WDF_DPC_CONFIG dpcConfig;
WDF_OBJECT_ATTRIBUTES dpcAttributes;
NTSTATUS status;
WDF_DPC_CONFIG_INIT(
&dpcConfig,
MyEvtDpcFunc
);
dpcConfig.AutomaticSerialization = TRUE;
WDF_OBJECT_ATTRIBUTES_INIT(&dpcAttributes);
dpcAttributes.ParentObject = pDevExt->WdfDevice;
status = WdfDpcCreate(
&dpcConfig,
&dpcAttributes,
&pDevExt->CompleteWriteDpc
);
if (!NT_SUCCESS(status)) {
return status;
}
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| versão mínima do KMDF | 1.0 |
| cabeçalho | wdfdpc.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 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |