共用方式為


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

表示顯示配接器的句柄。 顯示迷你埠驅動程式先前在傳遞給 DxgkDdiStartDeviceDXGKRNL_INTERFACE 結構的 DeviceHandle 成員中取得此句柄。

[in] TranslatedAddress

要對應之內存範圍的基底轉譯實體位址。 顯示迷你埠驅動程式先前藉由呼叫 DxgkCbGetDeviceInformation 來取得此位址。

[in] Length

要對應的範圍大小,以位元組為單位。

[in] InIoSpace

布爾值,指定範圍位於 I/O 空間 (TRUE) 或記憶體空間 (FALSE) 。

[in] MapToUserMode

布爾值,指定範圍是否對應到使用者模式空間或系統空間。 如果為 TRUE,則範圍會對應到目前進程的 (使用者模式) 虛擬位址空間。 如果為 FALSE,則範圍會對應至系統空間。 如果 InIoSpaceTRUE,則會忽略此參數。

[in] CacheType

指定對應範圍的快取行為的 MEMORY_CACHING_TYPE 列舉值。

[out] VirtualAddress

接收對應範圍開頭位址之變數的指標。 存取對應範圍的方式取決於 InIoSpaceMapToUserMode 的值。 下表摘要說明存取對應範圍的不同方式。

InIoSpace 的值 MapToUserMode 為 FALSE MapToUserMode 為 TRUE
false READ_REGISTER_X WRITE_REGISTER_X 使用者模式程式代碼會執行一般記憶體存取。
TRUE READ_PORT_X WRITE_PORT_X Not possible.

傳回值

如果成功,DxgkCbMapMemory 會傳回STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。

備註

PHYSICAL_ADDRESS數據類型定義於 Ntdef.h 中。

規格需求

需求
最低支援的用戶端 Windows Vista
目標平台 桌面
標頭 dispmprt.h (包含 Dispmprt.h)
IRQL PASSIVE_LEVEL

另請參閱

MEMORY_CACHING_TYPE