Compartilhar via


DXGKDDI_PREEMPTCOMMAND função de retorno de chamada (d3dkmddi.h)

A função DxgkDdiPreemptCommand preempõe um buffer de DMA (acesso direto à memória) que foi enviado anteriormente e atualmente enfileirado na unidade de execução de comando de hardware.

Sintaxe

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

NTSTATUS DxgkddiPreemptcommand(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}

Parâmetros

[in] hAdapter

Um identificador para um bloco de contexto associado a um adaptador de exibição. O driver de miniporta de exibição anteriormente forneceu esse identificador para o subsistema kernel de elementos gráficos do Microsoft DirectX no parâmetro de saída MiniportDeviceContext da função DxgkDdiAddDevice .

[in] pPreemptCommand

Um ponteiro para uma estrutura DXGKARG_PREEMPTCOMMAND que descreve o comando usado para antecipar um buffer de DMA enviado anteriormente para a unidade de execução de comando de hardware.

Retornar valor

Retorna STATUS_SUCCESS após a conclusão bem-sucedida. Se o driver retornar um código de erro, o sistema operacional fará com que ocorra uma verificação de bugs do sistema. Para obter mais informações, consulte a seção Comentários a seguir.

Comentários

Se o driver determinar que o hardware já terminou de processar todos os buffers de DMA enviados e se o hardware informou o agendador da GPU (unidade de processamento gráfico) sobre as conclusões, quando sua função DxgkDdiPreemptCommand é chamada para preempção dos buffers de DMA, o driver deve executar as seguintes operações em vez de enviar a cerca de preempção identificada pelo membro PreemptionFenceId de DXGKARG_PREEMPTCOMMAND para o hardware:

  • Elevar o IRQL para o nível de interrupção. Por exemplo, o driver pode chamar a função DxgkCbSynchronizeExecution para sincronizar com sua função DxgkDdiInterruptRoutine .
  • Informe o agendador de GPU sobre as informações de preempção. O driver pode chamar a função DxgkCbNotifyInterrupt diretamente ou chamar sua função DxgkDdiInterruptRoutine (por exemplo, se o driver também precisar executar outras atualizações).

    Observe que o agendador de GPU lida com instâncias em que o hardware parou de responder devido ao trabalho de TDR (Detecção e Recuperação de Tempo Limite).

Se o driver retornar um código de erro, o subsistema de kernel de elementos gráficos do Microsoft DirectX fará com que ocorra uma verificação de bugs do sistema. Em um arquivo de despejo de memória, o erro é observado pela mensagem BugCheck 0x119, que tem os quatro parâmetros a seguir.
  1. 0x2
  2. O código de erro NTSTATUS retornado da chamada de driver com falha
  3. Um ponteiro para a estrutura DXGKARG_PREEMPTCOMMAND
  4. Um ponteiro para uma estrutura de dados interna do agendador
DxgkDdiPreemptCommand deve se tornar inpálível porque é executado em IRQL = DISPATCH_LEVEL

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Plataforma de Destino Área de Trabalho
Cabeçalho d3dkmddi.h
IRQL DISPATCH_LEVEL

Confira também

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine