[英]How to write data in memory using JNA Pointer?
我有一個像以下內存的指針:
Pointer pData = new Memory(65536);
我需要從位置8開始獲取該內存的指針,因為我想將內存的一部分(從8到65535)發送到本機C API。
我用了:
pData8 = pData.getPointer(8);
從位置8開始獲取指針然后我嘗試使用以下命令向pData8寫入內容:
pData8.setInt(0xAAAA);
只是為了驗證我寫的是正確的位置,但我得到錯誤:內存訪問無效。
如何獲取指向內存部分的有效指針並能夠在其上寫入?
詳情如下:
80 Pointer pM = new Memory(65536);
81 Pointer p = pM.getPointer(4);
82 pM.setInt(0, 0xFFFF);
83 p.setInt(0, 0xBBBB);
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.setInt(Native Method)
at com.sun.jna.Pointer.setInt(Pointer.java:1124)
at it.caen.dig.Demo.main(Demo.java:83)
看起來你使用的是錯誤的API。 getPointer
返回在該偏移處找到的值作為指針(可能無處指向)。 如果要獲取指向該偏移量的指針,請使用share
:
使用給定的偏移量提供此內存的視圖以計算新的基址。
Pointer pM = new Memory(65536);
Pointer p = pM.share(4);
pM.setInt(0, 0xFFFF);
p.setInt(0, 0xBBBB);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.