функция обратного вызова 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, диапазон сопоставляется с системным пространством. Если inIoSpace имеет значение TRUE, этот параметр игнорируется.
[in] CacheType
Перечислитель MEMORY_CACHING_TYPE , указывающий поведение кэширования сопоставленного диапазона.
[out] VirtualAddress
Указатель на переменную, которая получает адрес начала сопоставленного диапазона. Способ доступа к сопоставленному диапазону зависит от значений InIoSpace и MapToUserMode. В следующей таблице перечислены различные способы доступа к сопоставленному диапазону.
Значение InIoSpace | MapToUserMode имеет значение FALSE | MapToUserMode имеет значение TRUE |
---|---|---|
Ложь. | READ_REGISTER_X WRITE_REGISTER_X | Код в пользовательском режиме выполняет обычный доступ к памяти. |
TRUE | READ_PORT_X WRITE_PORT_X | Невозможна. |
Возвращаемое значение
DxgkCbMapMemory возвращает STATUS_SUCCESS в случае успешного выполнения. В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.
Комментарии
Тип данных PHYSICAL_ADDRESS определен в ntdef.h.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Целевая платформа | Персональный компьютер |
Верхняя часть | dispmprt.h (включая Dispmprt.h) |
IRQL | PASSIVE_LEVEL |