我正在使用JNA. 本Pointer类代表了本地指针。访问似乎是peer成员变量的指针地址似乎很常见。但是,他们确保您无法查询它。为什么?如果您想使用它,推荐的获取方式是什么?
我写了以下“黑客”:
public static long getBaseAddress(Pointer pointer)
{
String stringPointer = pointer.toString();
String[] splitStringPointer = stringPointer.split("@");
int expectedSplitLength = 2;
if (splitStringPointer.length != expectedSplitLength)
{
throw new IllegalStateException("Expected a length of "
+ expectedSplitLength + " but got " + splitStringPointer.length);
}
String hexadecimalAddress = splitStringPointer[1].substring("0x".length());
return parseLong(hexadecimalAddress, 16);
}
但是除了滥用这种toString()获取地址的方法,难道就没有别的办法了吗?
我想使用Reflection比上述方法更少的方法,因为它也很脆弱。
一只萌萌小番薯
jeck猫
相关分类