функция обратного вызова DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE (d3dkmddi.h)
Драйвер мини-порта в режиме ядра может вызывать DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE для резервирования диапазона виртуальных адресов графической обработки (GPU) во время создания процесса.
Синтаксис
DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE DxgkcbReservegpuvirtualaddressrange;
NTSTATUS DxgkcbReservegpuvirtualaddressrange(
[in] IN_CONST_HANDLE hAdapter,
[in/out] INOUT_PDXGKARGCB_RESERVEGPUVIRTUALADDRESSRANGE pArgs
)
{...}
Параметры
[in] hAdapter
Дескриптор адаптера отображения.
[in/out] pArgs
Структура DXGKARGCB_RESERVEGPUVIRTUALADDRESSRANGE, описывающая операцию.
Возвращаемое значение
DXGKCB_RESERVEGPUVIRTUALADDRESSRANGE возвращает STATUS_SUCCESS, если он выполнен успешно. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
Резервирование диапазона виртуальных адресов GPU возможно только во время создания процесса (т. е. в вызове DxgkDdiCreateProcess) и недопустимо в любое другое время.
Резервирование возможно как в обычном процессе, так и в системном процессе, в котором находится системное устройство и контекст.
Первая запись в корневой таблице страницы (индекс записи таблицы страницы 0) всегда будет инициализирована как недопустимая диспетчером памяти видео, а резервирование драйверов начинается с индекса записи таблицы страницы 1. Резервирование драйверов всегда должно быть точным числом виртуального адресного пространства, охватываемого конечной таблицей, так как определенная запись таблицы страницы не может быть предоставлена совместно между диспетчером памяти видео и драйвером режима ядра. Записи таблицы страниц, зарезервированные драйвером, будут инициализированы как недопустимые диспетчером памяти видео и могут быть перезаписаны драйвером для ссылки на внутреннюю выделенную таблицу страниц, управляемую драйвером. Диспетчер памяти видео обновляет зарезервированные записи таблицы страниц, так как недопустимы каждый раз, когда соответствующая таблица страницы становится резидентной.
DXGKCB_XXX функции реализуются Dxgkrnl. Чтобы использовать эту функцию обратного вызова, задайте соответствующие члены DXGKARGCB_RESERVEGPUVIRTUALADDRESSRANGE, а затем вызовите DxgkCbReserveGpuVirtualAddressRange через DXGKRNL_INTERFACE.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 10 (WDDM 2.0) |
минимальный поддерживаемый сервер | Windows Server 2016 |
целевая платформа | Настольный |
заголовка | d3dkmddi.h (include Dispmprt.h) |
IRQL | <= PASSIVE_LEVEL |