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


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

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

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

Требования

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

См. также

DXGKARG_PATCH

DxgkDdiAddDevice