[問題] 如何取得變數的實體記憶體?

看板C_and_CPP (C/C++)作者時間10年前 (2015/11/19 16:35), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串1/1
開發平台(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

11/19 16:59, , 1F
實體記憶體只能在Ring0下存取,不然只能存取虛擬記憶體
11/19 16:59, 1F

11/19 17:05, , 2F
Data[512]存在實體記憶體的哪裡要看系統怎麼分配
11/19 17:05, 2F

11/21 14:51, , 3F
也許你需要使用DeviceIoControl之類的方式吧
11/21 14:51, 3F

11/21 15:12, , 4F
或是使用CreateFileMapping
11/21 15:12, 4F
文章代碼(AID): #1MJOdZN4 (C_and_CPP)
文章代碼(AID): #1MJOdZN4 (C_and_CPP)