簡體   English   中英

從 Java 中的本機系統調用獲取指針

[英]Getting pointer from native syscall in Java

具有以下 Java 代碼

Object[] params = new Object[] {new Object(), null}
int ret = lib.getClass().getMethod("syscall", int.class, Object[].class).invoke(
    lib, 116, params
);

其中116gettimofday系統 function 的代碼(在 MacOS 上),

我應該如何正確指定參數,以便我可以提取包含結果的timeval結構(由https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/gettimeofday.2.html指定)

function 期望特定的結構作為第一個參數,它將填充:

@Structure.FieldOrder({"sec", "usec"})
public static class Timeval extends Structure {
    /**
     * Seconds.
     */
    public long sec;

    /**
     * Microseconds.
     */
    public long usec;
}

提供如下參數使調用成功:

final Timeval timeval = new Timeval();
final Object[] params = new Object[]{timeval, null};
lib.syscall(116, params)

可以從timeval.sectimeval.usec檢索結果。

感謝@Mark Rotteveel的提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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