функция обратного вызова DXGKCB_MAP_MEMORY (dispmprt.h)
Функция DxgkCbMapMemory сопоставляет диапазон переведенных физических адресов (связанных с ресурсом памяти, назначенным адаптеру отображения) в системное пространство или виртуальное адресное пространство процесса пользовательского режима.
Синтаксис
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
Параметры
[in] DeviceHandle
Дескриптор, представляющий адаптер отображения. Ранее этот дескриптор отображался в элементе DeviceHandle структуры DXGKRNL_INTERFACE, переданной в DxgkDdiStartDevice.
[in] TranslatedAddress
Базовый преобразованный физический адрес диапазона памяти, который необходимо сопоставить. Драйвер мини-порта дисплея ранее получил этот адрес путем вызова DxgkCbGetDeviceInformation.
[in] Length
Размер диапазона в байтах, который необходимо сопоставить.
[in] InIoSpace
Логическое значение, указывающее, находится ли диапазон в пространстве ввода-вывода (TRUE) или памяти (FALSE).
[in] MapToUserMode
Логическое значение, указывающее, сопоставляется ли диапазон с пространством пользовательского режима или системным пространством. Если TRUE, диапазон сопоставляется с виртуальным адресным пространством текущего процесса (в режиме пользователя). Если FALSE, диапазон сопоставляется с системным пространством. Если InIoSpaceTRUE, этот параметр игнорируется.
[in] CacheType
Перечислитель MEMORY_CACHING_TYPE, указывающий поведение кэширования сопоставленного диапазона.
[out] VirtualAddress
Указатель на переменную, которая получает адрес начала сопоставленного диапазона. Способ доступа к сопоставленному диапазону зависит от значений InIoSpace и MapToUserMode. В следующей таблице приведены различные способы доступа к сопоставленному диапазону.
Значение InIoSpace | MapToUserMode имеет значение FALSE | MapToUserMode имеет значение TRUE |
---|---|---|
ЛОЖНЫЙ | READ_REGISTER_X WRITE_REGISTER_X | Код пользовательского режима выполняет обычный доступ к памяти. |
ИСТИННЫЙ | READ_PORT_X WRITE_PORT_X | Невозможно. |
Возвращаемое значение
DxgkCbMapMemory возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
Тип данных PHYSICAL_ADDRESS определен в Ntdef.h.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
целевая платформа | Настольный |
заголовка | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |