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


функция обратного вызова 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

См. также

MEMORY_CACHING_TYPE