Compartilhar via


Função WdfDpcCreate (wdfdpc.h)

[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
STATUS_INVALID_PARAMETER
Um parâmetro inválido foi especificado.
STATUS_INSUFFICIENT_RESOURCES
Não foi possível alocar um objeto DPC.
STATUS_WDF_PARENT_NOT_SPECIFIED
Um objeto pai não foi especificado na estrutura WDF_OBJECT_ATTRIBUTES.
STATUS_INVALID_DEVICE_REQUEST
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.
STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
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)

Consulte também

EvtDpcFunc

EvtDriverDeviceAdd

WDF_DPC_CONFIG

WDF_DPC_CONFIG_INIT

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDpcEnqueue