示例#1
0
  public void memoryMove(long src, long dest, long len) {
    final Pointer srcPointer = new Pointer(src);
    final Pointer destPointer = new Pointer(dest);

    if (memmove != null)
      memmove.invoke(Pointer.class, new Object[] {destPointer, srcPointer, new NativeLong(len)});
    else if (bcopy != null)
      bcopy.invokeVoid(new Object[] {srcPointer, destPointer, new NativeLong(len)});
    else {
      if (src > dest) for (long n = 0; n < len; n++) destPointer.setByte(n, srcPointer.getByte(n));
      else for (long n = len - 1; n >= 0; n--) destPointer.setByte(n, srcPointer.getByte(n));
    }
  }
示例#2
0
 public void testInterceptLastError() {
   if (!Platform.isWindows()) {
     return;
   }
   NativeLibrary kernel32 =
       (NativeLibrary) NativeLibrary.getInstance("kernel32", W32APIOptions.DEFAULT_OPTIONS);
   Function get = kernel32.getFunction("GetLastError");
   Function set = kernel32.getFunction("SetLastError");
   assertEquals("SetLastError should not be customized", Function.class, set.getClass());
   assertTrue(
       "GetLastError should be a Function", Function.class.isAssignableFrom(get.getClass()));
   assertTrue("GetLastError should be a customized Function", get.getClass() != Function.class);
   final int EXPECTED = 42;
   set.invokeVoid(new Object[] {new Integer(EXPECTED)});
   assertEquals("Wrong error", EXPECTED, get.invokeInt(null));
 }