作者drunknmunky ()
看板C_and_CPP
標題[問題] 如何取得變數的實體記憶體?
時間Thu Nov 19 16:35:44 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
手邊有ㄧdevice, 若要將資料輸入,只要告知資料的實體記憶體位址,會自動去指定位置
往下連續搬固定長度資料
因此宣告了ㄧ個指到array的pointer,
原本很單純以為這就是實體記憶體位址
結果使用其他讀實體記憶體tool
發現讀出的值跟我想像不同
餵入的資料(Input):
int Data[512];//初始值設為1
int *pData = Data;
預期的正確結果(Expected Output):
印出device資料內容
應該要都是1
錯誤結果(Wrong Output):
結果都是0
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.19.49
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1447922147.A.5C4.html
推 stupid0319: 實體記憶體只能在Ring0下存取,不然只能存取虛擬記憶體 11/19 16:59
推 stupid0319: Data[512]存在實體記憶體的哪裡要看系統怎麼分配 11/19 17:05
推 zaqimon: 也許你需要使用DeviceIoControl之類的方式吧 11/21 14:51
→ zaqimon: 或是使用CreateFileMapping 11/21 15:12