Compartilhar via


DXGKDDI_INTERRUPT_ROUTINE função de retorno de chamada (dispmprt.h)

A função DxgkDdiInterruptRoutine lida com interrupções geradas por um adaptador de exibição.

Sintaxe

DXGKDDI_INTERRUPT_ROUTINE DxgkddiInterruptRoutine;

BOOLEAN DxgkddiInterruptRoutine(
  [in] IN_CONST_PVOID MiniportDeviceContext,
  [in] IN_ULONG MessageNumber
)
{...}

Parâmetros

[in] MiniportDeviceContext

Um identificador para um bloco de contexto associado a um adaptador de exibição. A função DxgkDdiAddDevice do driver de miniporta de exibição forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos DirectX.

[in] MessageNumber

O índice baseado em zero na tabela MSI ( interrupção sinalizada por mensagem ) se a interrupção for sinalizada por mensagem. Para interrupções baseadas em linha, esse parâmetro é zero.

Retornar valor

Se DxgkDdiInterruptRoutine determinar que o adaptador representado por MiniportDeviceContext não gerou a interrupção, ele retornará FALSE. Caso contrário, ele deverá ignorar a interrupção no adaptador antes de retornar TRUE.

Comentários

Se a interrupção for baseada em linha (MessageNumber = 0), DxgkDdiInterruptRoutine deverá determinar se o adaptador representado por MiniportDeviceContext gerou a interrupção e, caso contrário, retornará FALSE imediatamente.

Se o adaptador representado por MiniportDeviceContext tiver gerado a interrupção, dxgkDdiInterruptRoutine deverá executar as seguintes etapas:

  • Descarte a interrupção no adaptador.
  • Conclua a operação solicitada que causou a interrupção ou enfileira um DPC que concluirá a operação mais tarde.
  • Retornar TRUE o mais rápido possível.

Qualquer outra função de driver de miniporto de exibição que compartilhe memória (por exemplo, parte do estado representado por MiniportDeviceContext) com DxgkDdiInterruptRoutine deve chamar DxgkCbSynchronizeExecution para sincronizar seu acesso à memória compartilhada.

A função DxgkDdiInterruptRoutine pode chamar DxgkCbQueueDpc e DxgkCbNotifyInterrupt , mas não deve chamar nenhuma outra função DxgkCbXxx . Para obter mais informações sobre a sequência adequada de chamadas de função, consulte Enviando um buffer de comando.

DxgkDdiInterruptRoutine é executado em um IRQL elevado, portanto, ele (e todas as funções que ele chama) devem ser não pagináveis. Além disso, DxgkDdiInterruptRoutine (e todas as funções que ele chama) não devem tentar acessar a memória paginável.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Plataforma de Destino Área de Trabalho
Cabeçalho dispmprt.h
IRQL Consulte a seção Observações.

Confira também

DxgkCbNotifyInterrupt

DxgkCbQueueDpc

DxgkCbSynchronizeExecution