Поделиться через


функция обратного вызова DXGKDDI_PREEMPTCOMMAND (d3dkmddi.h)

Функция DxgkDdiPreemptCommand создает буфер прямого доступа к памяти (DMA), который ранее был отправлен и в настоящее время помещен в очередь в аппаратном блоке выполнения команд.

Синтаксис

DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;

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

Параметры

[in] hAdapter

Дескриптор к блоку контекста, связанному с адаптером отображения. Драйвер минипорта отображения ранее предоставил этот дескриптор подсистеме ядра графики Microsoft DirectX в MiniportDeviceContext выходном параметре функции DxgkDdiAddDevice.

[in] pPreemptCommand

Указатель на структуру DXGKARG_PREEMPTCOMMAND, описывающую команду, используемую для подготовки буфера DMA, ранее отправленного в аппаратную единицу выполнения команд.

Возвращаемое значение

Возвращает STATUS_SUCCESS после успешного завершения. Если драйвер возвращает код ошибки, операционная система вызывает ошибку системы. Дополнительные сведения см. в следующем разделе "Примечания".

Замечания

Если драйвер определяет, что оборудование уже готово обработать все отправленные буферы DMA и что оборудование сообщило планировщику графической обработки (GPU), когда его DxgkDdiPreemptCommand вызывается для подготовки буферов DMA, Драйвер должен выполнять следующие операции вместо отправки забора, определяемого PreemptionFenceId члена DXGKARG_PREEMPTCOMMAND на оборудование:

  • Вызов IRQL на уровень прерывания. Например, драйвер может вызвать функцию DxgkCbSynchronizeExecution для синхронизации с функцией DxgkDdiInterruptRoutine.
  • Сообщите планировщику GPU о сведениях о преимпции. Драйвер может вызывать функцию DxgkCbNotifyInterrupt напрямую или вызывать ее функцию DxgkDdiInterruptRoutine (например, если драйвер должен выполнять другие обновления.

    Обратите внимание, что планировщик GPU обрабатывает экземпляры, в которых оборудование перестало отвечать из-за работы обнаружения времени ожидания и восстановления (TDR).

Если драйвер возвращает код ошибки, подсистема ядра графики Microsoft DirectX вызывает ошибку системы. В файле аварийного дампа ошибка отмечается сообщением BugCheck 0x119, которое имеет следующие четыре параметра.
  1. 0x2
  2. Код ошибки NTSTATUS, возвращенный из вызова драйвера сбоем
  3. Указатель на структуру DXGKARG_PREEMPTCOMMAND
  4. Указатель на внутреннюю структуру данных планировщика
DxgkDdiPreemptCommand должен быть недоступен, так как он выполняется в IRQL = DISPATCH_LEVEL

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
целевая платформа Настольный
заголовка d3dkmddi.h
IRQL DISPATCH_LEVEL

См. также

DXGKARG_PREEMPTCOMMAND

DxgkCbNotifyInterrupt

DxgkCbSynchronizeExecution

DxgkDdiAddDevice

DxgkDdiInterruptRoutine