簡體   English   中英

如何使用JNA Pointer在內存中寫入數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM