JNA无法在方法中将Integer作为Enum传递

时间:2018-09-10 12:57:38

标签: java c enums jna

我在这里有一个方法

HRESULT GetImage(
  SIZE    size,
  SIIGBF  flags,
  HBITMAP *phbm
);

,将SIIGBF作为参数。 SIIGBF是一个枚举,您可以看到here

如本post中所述,我按如下方式创建枚举:

public static interface SIIGBF {
        public static final int SIIGBF_RESIZETOFIT = 0x00000000;
        public static final int SIIGBF_BIGGERSIZEOK = 0x00000001;
        public static final int SIIGBF_MEMORYONLY = 0x00000002;
        public static final int SIIGBF_ICONONLY  = 0x00000004;
        public static final int SIIGBF_THUMBNAILONLY  = 0x00000008;
        public static final int SIIGBF_INCACHEONLY  = 0x00000010;
    };

我将方法映射到顶部,这样:

WinNT.HRESULT GetImage(WinUser.SIZE size, int flags, WinDef.HBITMAP phbm) {
        return (WinNT.HRESULT) _invokeNativeObject(3,new Object[]{getPointer(),size,flags,phbm},WinNT.HRESULT.class);
    }

我这样运行方法:

WinNT.HRESULT hr = factory.GetImage(size,Shell32Extra.SIIGBF.SIIGBF_RESIZETOFIT,hbitmap);

但是它返回一个无效的内存访问错误,可能是因为枚举作为整数而存在的。你能帮我吗?

0 个答案:

没有答案