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


функция обратного вызова 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 драйвер должен выполнить следующие операции вместо отправки ограждения, определяемого элементом PreemptionFenceIdDXGKARG_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