Share via


0x10D de Verificação de Bugs: WDF_VIOLATION

O bug WDF_VIOLATION marcar tem um valor de 0x0000010D. Isso indica que Kernel-Mode KMDF (Driver Framework) detectou que o Windows encontrou um erro em um driver baseado em estrutura.

Importante

Este artigo é para programadores. Se você for um cliente que recebeu um código de erro de tela azul ao usar o computador, consulte Solucionar erros de tela azul.

Parâmetros de WDF_VIOLATION

O parâmetro 1 indica o código de erro específico do bug marcar. O parâmetro 4 é reservado.

Parâmetro 1 Parâmetro 2 Parâmetro 3 Causa do erro

0x1

Ponteiro para uma estrutura de WDF_POWER_ROUTINE_TIMED_OUT_DATA

Reservado

Um driver baseado em estrutura atingiu o tempo limite durante uma operação de energia. Isso normalmente significa que a pilha do dispositivo não definiu o bit DO_POWER_PAGABLE e um driver tentou uma operação paginável depois que a pilha do dispositivo de paginação foi desligar.

0x2

Reservado

Reservado

Uma tentativa está sendo feita para adquirir um bloqueio que está sendo mantido no momento.

0x3

Identificador WDFREQUEST

O número de referências pendentes que permanecem em ambos os buffers

O Verificador do Windows Driver Framework encontrou um erro fatal. Em particular, uma solicitação de E/S foi concluída, mas um objeto de solicitação de estrutura não pode ser excluído porque há referências pendentes para o buffer de entrada, o buffer de saída ou ambos.

0x4

Reservado

O endereço do chamador

Um parâmetro NULL foi passado para uma função que exigia um valor não NULL .

0x5

O valor do identificador passado

Reservado

Um identificador de objeto de estrutura do tipo incorreto foi passado para um método de objeto de estrutura.

0x6

Consulte a tabela abaixo.

0x7

O identificador do objeto framework

Reservado

Um driver tentou excluir um objeto de estrutura incorretamente chamando WdfObjectDereference para excluir um identificador em vez de chamar WdfObjectDelete.

0x8

O identificador do objeto de transação DMA

Reservado

Ocorreu uma operação em um objeto de transação DMA enquanto ele não estava no estado correto.

0x9

Atualmente não utilizado.

0xA

Um ponteiro para uma estrutura de WDF_QUEUE_FATAL_ERROR_DATA

Reservado

Ocorreu um erro fatal ao processar uma solicitação que está atualmente na fila.

0xB

Consulte a tabela abaixo.

0xC

Identificador WDFDEVICE

Ponteiro para o novo PnP IRP

Um novo PnP IRP de alteração de estado chegou enquanto o driver estava processando outro PnP IRP de alteração de estado.

0xD

Identificador WDFDEVICE

Ponteiro para ligar o IRP

O proprietário da política de energia de um dispositivo recebeu um IRP de energia que não solicitou. Pode haver vários proprietários de política de energia, mas apenas um é permitido. Um driver KMDF pode alterar a propriedade da política de energia chamando WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL no qual a função de retorno de chamada de evento foi chamada.

IRQL no qual a função de retorno de chamada de evento retornou.

Uma função de retorno de chamada de evento não retornou no mesmo IRQL em que foi chamada. A função de retorno de chamada alterou o IRQL direta ou indiretamente (por exemplo, adquirindo um spinlock, o que eleva IRQL para DISPATCH_LEVEL, mas não liberando o spinlock).

0xF

Endereço de uma função de retorno de chamada de evento.

Reservado

Uma função de retorno de chamada de evento entrou em uma região crítica, mas não deixou a região crítica antes de retornar.

O parâmetro 1 é igual a 0x6

Se o Parâmetro 1 for igual a 0x6, um erro fatal foi cometido no tratamento de uma solicitação do WDF. Nesse caso, o Parâmetro 2 especifica ainda mais o tipo de erro fatal que foi feito, conforme definido pela enumeração WDF_REQUEST_FATAL_ERROR.

Parâmetro 2 Parâmetro 3 Causa do erro

0x1

O endereço do IRP

Não há mais locais de pilha de E/S disponíveis para formatar o IRP subjacente.

0x2

O valor do identificador de solicitação do WDF

Foi feita uma tentativa de formatar um objeto de solicitação de estrutura que não continha um IRP.

0x3

O valor do identificador de solicitação do WDF

O driver tentou enviar uma solicitação de estrutura que já foi enviada para um destino de E/S.

0x4

Um ponteiro para uma estrutura WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA que contém um ponteiro para o IRP, um valor de identificador de solicitação WDF, uma função principal irp e o número de bytes que tentaram ser gravados

O driver concluiu uma solicitação de estrutura, mas gravou mais bytes no buffer de saída do que os especificados no IRP.

O parâmetro 1 é igual a 0xB

Se o Parâmetro 1 for igual a 0xB, uma tentativa de adquirir ou liberar um bloqueio era inválida. Nesse caso, o Parâmetro 3 especifica ainda mais o erro que foi feito.

Parâmetro 2 Parâmetro 3 Causa do erro

O valor do identificador

0x0

Um identificador passado para WdfObjectAcquireLock ou WdfObjectReleaseLock representa um objeto que não dá suporte a bloqueios de sincronização.

Um identificador de bloqueio de rotação do WDF

0x1

O bloqueio de rotação está sendo liberado por um thread que não o adquiriu.

Causa

Consulte a descrição de cada código na seção Parâmetros para obter uma explicação da causa.

Resolução

A extensão de depuração !analyze exibe informações sobre o bug marcar e pode ser útil na coleta de informações, como o módulo de código com falha.

Normalmente, o arquivo de despejo do WDF produzirá mais informações sobre o driver que causou esse bug marcar. Use este comando para examinar o arquivo de log.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Se o Parâmetro 1 for igual a 0x2, examine a pilha do chamador para determinar o bloqueio em questão.

Se o Parâmetro 1 for igual a 0x3, o log de erros do driver Kernel-Mode Driver Framework incluirá detalhes sobre as referências pendentes.

Se o Parâmetro 1 for igual a 0x4, use o comando ln debugger com o valor do Parâmetro 3 como seu argumento para determinar qual função requer um parâmetro não NULL .

Se o Parâmetro 1 for igual a 0x7, use o comando de extensão !wdfkd.wdfhandleParameter 2 para determinar o tipo de identificador.

Se o Parâmetro 1 for igual a 0xA, a estrutura WDF_QUEUE_FATAL_ERROR_DATA indicará a solicitação problemática ou o identificador da fila. Ele também indicará o NTSTATUS, se não STATUS_SUCCESS, quando disponível.