Использование модели буфера DMA с гарантированным контрактом
Модель драйвера дисплея для Windows Vista гарантирует размер буферов DMA и списков мест исправлений для графического устройства. Список расположений патчей содержит адреса физической памяти ресурсов, на которые ссылаются команды в буфере DMA.
В гарантированном режиме контракта драйвер отображения в пользовательском режиме учитывает точный размер буфера DMA и списка исправлений, доступный для перевода, когда драйвер отображения в пользовательском режиме заполняет буферы команд и вызывает pfnRenderCb , чтобы отправить их в драйвер минипорта отображения. После каждого вызова pfnRenderCb драйвер отображения в пользовательском режиме получает размер буфера DMA и списка расположений исправлений, доступных для следующего перевода (т. е. следующий вызов pfnRenderCb).
Диспетчер памяти видео гарантирует, что буферы DMA и списки местоположений исправлений для этого устройства не будут сокращены до завершения следующего этапа трансляции. Драйвер минипорта отображения должен быть в состоянии перевести один буфер команд в один буфер DMA и один список мест расположения патчей. Если этот перевод невозможен, буфер команд в пользовательском режиме недопустим. Драйвер минипорта отображения не может возвращать состояние, указывающее на недостаток буферного пространства DMA и списков местоположений исправлений во время преобразования. Это приводит к ошибке менеджера видео памяти, так как менеджер памяти не соответствует требованиям гарантированного контракта DMA.