Skip to content

Commit 3848282

Browse files
committed
Add support for Windows JNA Affinity
1 parent 98c46f2 commit 3848282

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@
5252
<artifactId>jna</artifactId>
5353
<version>3.4.0</version>
5454
</dependency>
55+
<dependency>
56+
<groupId>net.java.dev.jna</groupId>
57+
<artifactId>platform</artifactId>
58+
<version>3.4.0</version>
59+
</dependency>
5560
</dependencies>
5661

5762
<build>

src/main/java/vanilla/java/affinity/impl/WindowsJNAAffinity.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@
1616

1717
package vanilla.java.affinity.impl;
1818

19-
import com.sun.jna.*;
20-
import com.sun.jna.ptr.IntByReference;
19+
import com.sun.jna.LastErrorException;
20+
import com.sun.jna.Library;
21+
import com.sun.jna.Native;
22+
import com.sun.jna.PointerType;
23+
import com.sun.jna.platform.win32.WinDef;
2124
import com.sun.jna.ptr.LongByReference;
2225
import vanilla.java.affinity.IAffinity;
2326

@@ -42,13 +45,11 @@ public enum WindowsJNAAffinity implements IAffinity {
4245
* @author BegemoT
4346
*/
4447
private interface CLibrary extends Library {
45-
//public static final CLibrary INSTANCE = (CLibrary) Native.loadLibrary(LIBRARY_NAME, CLibrary.class);
46-
47-
public static final CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? "kernel32" : "c"), CLibrary.class);
48+
public static final CLibrary INSTANCE = (CLibrary) Native.loadLibrary("kernel32", CLibrary.class);
4849

4950
public int GetProcessAffinityMask(final int pid, final PointerType lpProcessAffinityMask, final PointerType lpSystemAffinityMask) throws LastErrorException;
5051

51-
public void SetThreadAffinityMask(final int pid, final IntByReference lpProcessAffinityMask) throws LastErrorException;
52+
public void SetThreadAffinityMask(final int pid, final WinDef.DWORD lpProcessAffinityMask) throws LastErrorException;
5253

5354
public int GetCurrentThread() throws LastErrorException;
5455
}
@@ -88,7 +89,7 @@ public void setAffinity(final long affinity) {
8889
final CLibrary lib = CLibrary.INSTANCE;
8990
try {
9091

91-
IntByReference aff = new IntByReference((int) affinity);
92+
WinDef.DWORD aff = new WinDef.DWORD(affinity);
9293

9394
lib.SetThreadAffinityMask(lib.GetCurrentThread(), aff);
9495

0 commit comments

Comments
 (0)