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


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

Функция DxgkDdiPatch назначает физические адреса заданному буферу прямого доступа к памяти (DMA) перед отправкой буфера DMA на графическое оборудование.

Синтаксис

DXGKDDI_PATCH DxgkddiPatch;

NTSTATUS DxgkddiPatch(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PATCH pPatch
)
{...}

Параметры

[in] hAdapter

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

[in] pPatch

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

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

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

Комментарии

Функция DxgkDdiPatch должна назначать физические адреса буферу DMA на месте. Таким образом, когда драйвер мини-порта дисплея создает буфер DMA, драйвер должен убедиться, что в буфере DMA есть свободное место для вставки инструкций, необходимых для обработки физических адресов. Обратите внимание, что физические адреса могут соответствовать видеопамять, памяти AGP/PCI Express или системной памяти.

Драйвер должен изучить предоставленный список расположения исправлений в элементе pPatchLocationListструктуры DXGKARG_PATCH , на которую указывает параметр pPatch , чтобы определить места в буфере DMA, которые должны быть исправлены с помощью физических адресов. Предоставленный список выделения (который задается членом pAllocationList DXGKARG_PATCH) также содержит физические адреса, создаваемые диспетчером видеопамяли. Вызов функции DxgkDdiPatch драйвера является последним шансом для драйвера изменить содержимое буфера DMA перед отправкой буфера DMA в графический процессор (GPU). Обратите внимание, что драйвер может исправить буфер DMA несколько раз в сценариях, когда буфер DMA вытеснен.

Драйвер может исправить значение, указанное в элементе SubmissionFenceId DXGKARG_PATCH в команду fence в конце буфера DMA. Дополнительные сведения об этом элементе см. в разделе Предоставление идентификаторов ограждения.

Если драйвер возвращает код ошибки, подсистема графического ядра Microsoft DirectX вызывает проверку системных ошибок. В файле аварийного дампа ошибка отмечается сообщением BugCheck 0x119, которое имеет следующие четыре параметра.

  1. 0x3
  2. Указатель на структуру данных внутреннего планировщика
  3. Указатель на структуру данных внутреннего планировщика
  4. Указатель на структуру данных внутреннего планировщика
DxgkDdiPatch должен быть доступным для страниц.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Персональный компьютер
Верхняя часть d3dkmddi.h
IRQL PASSIVE_LEVEL

См. также раздел

DXGKARG_PATCH

DxgkDdiAddDevice