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
表示顯示配接器的句柄。 顯示迷你埠驅動程式先前在傳遞給 DxgkDdiStartDevice 之 DXGKRNL_INTERFACE 結構的 DeviceHandle 成員中取得此句柄。
[in] TranslatedAddress
要對應之內存範圍的基底轉譯實體位址。 顯示迷你埠驅動程式先前藉由呼叫 DxgkCbGetDeviceInformation 來取得此位址。
[in] Length
要對應的範圍大小,以位元組為單位。
[in] InIoSpace
布爾值,指定範圍位於 I/O 空間 (TRUE) 或記憶體空間 (FALSE) 。
[in] MapToUserMode
布爾值,指定範圍是否對應到使用者模式空間或系統空間。 如果為 TRUE,則範圍會對應到目前進程的 (使用者模式) 虛擬位址空間。 如果為 FALSE,則範圍會對應至系統空間。 如果 InIoSpace 為 TRUE,則會忽略此參數。
[in] CacheType
指定對應範圍的快取行為的 MEMORY_CACHING_TYPE 列舉值。
[out] VirtualAddress
接收對應範圍開頭位址之變數的指標。 存取對應範圍的方式取決於 InIoSpace 和 MapToUserMode 的值。 下表摘要說明存取對應範圍的不同方式。
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 |