DXGKDDI_INTERRUPT_ROUTINE função de retorno de chamada (dispmprt.h)
A função DxgkDdiInterruptRoutine manipula 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 miniporto de exibição anteriormente forneceu esse identificador para o subsistema de kernel de elementos gráficos DirectX.
[in] MessageNumber
O índice baseado em zero no tabela msi ( de interrupção sinalizada por mensagem) se a interrupção for sinalizada por mensagem. Para interrupções baseadas em linha, esse parâmetro é zero.
Valor de retorno
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.
Observações
Se a interrupção for baseada em linha (MessageNumber = 0), DxgkDdiInterruptRoutine deve determinar se o adaptador representado por MiniportDeviceContext gerou a interrupção e, se não, retornará FALSE imediatamente.
Se o adaptador representado por MiniportDeviceContext gerou 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, alguma 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 DxgkCbfunções de Xxx. Para obter mais informações sobre a sequência adequada de chamadas de função, consulte Enviar um buffer de comando.
DxgkDdiInterruptRoutine é executado em um IRQL com privilégios elevados, 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 |
---|---|
de cliente com suporte mínimo | Windows Vista |
da Plataforma de Destino | Área de trabalho |
cabeçalho | dispmprt.h |
IRQL | Consulte a seção Comentários. |