public class WinAPI
extends java.lang.Object
This is a pure lightweight wrapper around WIN32 API calls with no added syntactic sugar, functionality or niceties.
Here is a rude example:
import static jtermios.windows.WinAPI.*;
...
byte[] buffer = "Hello World".getBytes();
HANDLE hcomm = CreateFileA( "COM5:", GENERIC_READ |GENERIC_WRITE, 0, null, 0, 0, null );
int[] wrtn = {0};
WriteFile(hcomm, buffer, buffer.length, wrtn);
CloseHandle(hcomm);
Can't get much closer to C-code, what!
In addition to the basic open/close/read/write and setup operations this class also makes available enough of the WIN32 Event API to make it possible to use overlapped (asynchronous) I/O on COM ports.
Note that overlapped IO API is full of fine print. Especially worth mentioning is that the OVERLAPPED structure cannot use autosync as it is modified (by Windows) outside the function calls that use it. OVERLAPPED takes care of not autosyncing but it is best to us the writeField() methods to set fields of OVERLAPPED.
OVERLAPPED ovl = new OVERLAPPED();
ovl.writeField("hEvent",CreateEvent(null, true, false, null));
...
WriteFile(hComm, txm, txb.length, txn, ovl);
...
GetOverlappedResult(hComm, ovl, txn, true);
Modifier and Type | Class and Description |
---|---|
static class |
WinAPI.COMMTIMEOUTS |
static class |
WinAPI.COMSTAT |
static class |
WinAPI.DCB |
static class |
WinAPI.HANDLE |
static class |
WinAPI.OVERLAPPED
Represent the Windows API struct OVERLAPPED.
|
static class |
WinAPI.SECURITY_ATTRIBUTES |
static class |
WinAPI.ULONG_PTR |
static interface |
WinAPI.WaitMultiple |
static interface |
WinAPI.Windows_kernel32_lib |
static class |
WinAPI.Windows_kernel32_lib_Direct |
Constructor and Description |
---|
WinAPI() |
Modifier and Type | Method and Description |
---|---|
static boolean |
CancelIo(WinAPI.HANDLE hFile) |
static boolean |
ClearCommBreak(WinAPI.HANDLE hFile) |
static boolean |
ClearCommError(WinAPI.HANDLE hFile,
int[] n,
WinAPI.COMSTAT s) |
static boolean |
CloseHandle(WinAPI.HANDLE hFile) |
static WinAPI.HANDLE |
CreateEvent(WinAPI.SECURITY_ATTRIBUTES security,
boolean manual,
boolean initial,
java.lang.String name) |
static WinAPI.HANDLE |
CreateFile(java.lang.String name,
int access,
int sharing,
WinAPI.SECURITY_ATTRIBUTES security,
int create,
int attribs,
com.sun.jna.Pointer template) |
static boolean |
EscapeCommFunction(WinAPI.HANDLE hFile,
int func) |
static boolean |
FlushFileBuffers(WinAPI.HANDLE hFile) |
static int |
FormatMessageW(int flags,
com.sun.jna.Pointer src,
int msgId,
int langId,
com.sun.jna.Pointer dst,
int sze,
com.sun.jna.Pointer va_list) |
static boolean |
GetCommMask(WinAPI.HANDLE hFile,
int[] mask) |
static boolean |
GetCommModemStatus(WinAPI.HANDLE hFile,
int[] stat) |
static boolean |
GetCommState(WinAPI.HANDLE hFile,
WinAPI.DCB dcb) |
static int |
GetLastError() |
static boolean |
GetOverlappedResult(WinAPI.HANDLE hFile,
WinAPI.OVERLAPPED ovl,
int[] ntfrd,
boolean wait) |
static int |
MAKELANGID(int p,
int s) |
static boolean |
PurgeComm(WinAPI.HANDLE hFile,
int qmask) |
static int |
QueryDosDevice(java.lang.String name,
byte[] buffer,
int bsize) |
static boolean |
ReadFile(WinAPI.HANDLE hFile,
byte[] buf,
int rdn,
int[] nrd) |
static boolean |
ReadFile(WinAPI.HANDLE hFile,
com.sun.jna.Pointer buf,
int rdn,
int[] nrd,
WinAPI.OVERLAPPED ovrlp) |
static boolean |
ResetEvent(WinAPI.HANDLE hEvent) |
static boolean |
SetCommBreak(WinAPI.HANDLE hFile) |
static boolean |
SetCommMask(WinAPI.HANDLE hFile,
int mask) |
static boolean |
SetCommState(WinAPI.HANDLE hFile,
WinAPI.DCB dcb) |
static boolean |
SetCommTimeouts(WinAPI.HANDLE hFile,
WinAPI.COMMTIMEOUTS touts) |
static boolean |
SetEvent(WinAPI.HANDLE hEvent) |
static boolean |
SetupComm(WinAPI.HANDLE hFile,
int inQueueSz,
int outQueueSz) |
static boolean |
WaitCommEvent(WinAPI.HANDLE hFile,
int[] lpEvtMask) |
static boolean |
WaitCommEvent(WinAPI.HANDLE hFile,
com.sun.jna.ptr.IntByReference lpEvtMask,
WinAPI.OVERLAPPED ovl) |
static int |
WaitForMultipleObjects(int nCount,
WinAPI.HANDLE[] lpHandles,
boolean bWaitAll,
int dwMilliseconds) |
static int |
WaitForSingleObject(WinAPI.HANDLE hHandle,
int dwMilliseconds) |
static boolean |
WriteFile(WinAPI.HANDLE hFile,
byte[] buf,
int wrn,
int[] nwrtn) |
static boolean |
WriteFile(WinAPI.HANDLE hFile,
com.sun.jna.Pointer buf,
int wrn,
int[] nwrtn,
WinAPI.OVERLAPPED ovrlp) |
public static WinAPI.HANDLE INVALID_HANDLE_VALUE
public static WinAPI.HANDLE NULL
public static final int ERROR_INSUFFICIENT_BUFFER
public static final int MAXDWORD
public static final int STATUS_WAIT_0
public static final int STATUS_ABANDONED_WAIT_0
public static final int WAIT_ABANDONED
public static final int WAIT_ABANDONED_0
public static final int WAIT_OBJECT_0
public static final int WAIT_FAILED
public static final int INFINITE
public static final int WAIT_TIMEOUT
public static final int GENERIC_READ
public static final int GENERIC_WRITE
public static final int GENERIC_EXECUTE
public static final int GENERIC_ALL
public static final int CREATE_NEW
public static final int CREATE_ALWAYS
public static final int OPEN_EXISTING
public static final int OPEN_ALWAYS
public static final int TRUNCATE_EXISTING
public static final int PURGE_TXABORT
public static final int PURGE_RXABORT
public static final int PURGE_TXCLEAR
public static final int PURGE_RXCLEAR
public static final int MS_CTS_ON
public static final int MS_DSR_ON
public static final int MS_RING_ON
public static final int MS_RLSD_ON
public static final int SETXOFF
public static final int SETXON
public static final int SETRTS
public static final int CLRRTS
public static final int SETDTR
public static final int CLRDTR
public static final int RESETDEV
public static final int SETBREAK
public static final int CLRBREAK
public static final int FILE_FLAG_WRITE_THROUGH
public static final int FILE_FLAG_OVERLAPPED
public static final int FILE_FLAG_NO_BUFFERING
public static final int FILE_FLAG_RANDOM_ACCESS
public static final int FILE_FLAG_SEQUENTIAL_SCAN
public static final int FILE_FLAG_DELETE_ON_CLOSE
public static final int FILE_FLAG_BACKUP_SEMANTICS
public static final int FILE_FLAG_POSIX_SEMANTICS
public static final int FILE_FLAG_OPEN_REPARSE_POINT
public static final int FILE_FLAG_OPEN_NO_RECALL
public static final int FILE_FLAG_FIRST_PIPE_INSTANCE
public static final int ERROR_OPERATION_ABORTED
public static final int ERROR_IO_INCOMPLETE
public static final int ERROR_IO_PENDING
public static final int ERROR_INVALID_PARAMETER
public static final int ERROR_BROKEN_PIPE
public static final int ERROR_MORE_DATA
public static final int ERROR_FILE_NOT_FOUND
public static final byte NOPARITY
public static final byte ODDPARITY
public static final byte EVENPARITY
public static final byte MARKPARITY
public static final byte SPACEPARITY
public static final byte ONESTOPBIT
public static final byte ONE5STOPBITS
public static final byte TWOSTOPBITS
public static final int CBR_110
public static final int CBR_300
public static final int CBR_600
public static final int CBR_1200
public static final int CBR_2400
public static final int CBR_4800
public static final int CBR_9600
public static final int CBR_14400
public static final int CBR_19200
public static final int CBR_38400
public static final int CBR_56000
public static final int CBR_57600
public static final int CBR_115200
public static final int CBR_128000
public static final int CBR_256000
public static final int CE_RXOVER
public static final int CE_OVERRUN
public static final int CE_RXPARITY
public static final int CE_FRAME
public static final int CE_BREAK
public static final int CE_TXFULL
public static final int CE_PTO
public static final int CE_IOE
public static final int CE_DNS
public static final int CE_OOP
public static final int CE_MODE
public static final int IE_BADID
public static final int IE_OPEN
public static final int IE_NOPEN
public static final int IE_MEMORY
public static final int IE_DEFAULT
public static final int IE_HARDWARE
public static final int IE_BYTESIZE
public static final int IE_BAUDRATE
public static final int EV_RXCHAR
public static final int EV_RXFLAG
public static final int EV_TXEMPTY
public static final int EV_CTS
public static final int EV_DSR
public static final int EV_RLSD
public static final int EV_BREAK
public static final int EV_ERR
public static final int EV_RING
public static final int EV_PERR
public static final int EV_RX80FULL
public static final int EV_EVENT1
public static final int EV_EVENT2
public static final int FORMAT_MESSAGE_ALLOCATE_BUFFER
public static final int FORMAT_MESSAGE_IGNORE_INSERTS
public static final int FORMAT_MESSAGE_FROM_STRING
public static final int FORMAT_MESSAGE_FROM_HMODULE
public static final int FORMAT_MESSAGE_FROM_SYSTEM
public static final int FORMAT_MESSAGE_ARGUMENT_ARRAY
public static final int FORMAT_MESSAGE_MAX_WIDTH_MASK
public static final int LANG_NEUTRAL
public static final int SUBLANG_DEFAULT
public static int MAKELANGID(int p, int s)
public static WinAPI.HANDLE CreateFile(java.lang.String name, int access, int sharing, WinAPI.SECURITY_ATTRIBUTES security, int create, int attribs, com.sun.jna.Pointer template)
public static boolean WriteFile(WinAPI.HANDLE hFile, byte[] buf, int wrn, int[] nwrtn)
public static boolean WriteFile(WinAPI.HANDLE hFile, com.sun.jna.Pointer buf, int wrn, int[] nwrtn, WinAPI.OVERLAPPED ovrlp)
public static boolean ReadFile(WinAPI.HANDLE hFile, byte[] buf, int rdn, int[] nrd)
public static boolean ReadFile(WinAPI.HANDLE hFile, com.sun.jna.Pointer buf, int rdn, int[] nrd, WinAPI.OVERLAPPED ovrlp)
public static boolean FlushFileBuffers(WinAPI.HANDLE hFile)
public static boolean PurgeComm(WinAPI.HANDLE hFile, int qmask)
public static boolean CancelIo(WinAPI.HANDLE hFile)
public static boolean CloseHandle(WinAPI.HANDLE hFile)
public static boolean ClearCommError(WinAPI.HANDLE hFile, int[] n, WinAPI.COMSTAT s)
public static boolean SetCommMask(WinAPI.HANDLE hFile, int mask)
public static boolean GetCommMask(WinAPI.HANDLE hFile, int[] mask)
public static boolean GetCommState(WinAPI.HANDLE hFile, WinAPI.DCB dcb)
public static boolean SetCommState(WinAPI.HANDLE hFile, WinAPI.DCB dcb)
public static boolean SetCommTimeouts(WinAPI.HANDLE hFile, WinAPI.COMMTIMEOUTS touts)
public static boolean SetupComm(WinAPI.HANDLE hFile, int inQueueSz, int outQueueSz)
public static boolean SetCommBreak(WinAPI.HANDLE hFile)
public static boolean ClearCommBreak(WinAPI.HANDLE hFile)
public static boolean GetCommModemStatus(WinAPI.HANDLE hFile, int[] stat)
public static boolean EscapeCommFunction(WinAPI.HANDLE hFile, int func)
public static WinAPI.HANDLE CreateEvent(WinAPI.SECURITY_ATTRIBUTES security, boolean manual, boolean initial, java.lang.String name)
public static boolean SetEvent(WinAPI.HANDLE hEvent)
public static boolean ResetEvent(WinAPI.HANDLE hEvent)
public static boolean WaitCommEvent(WinAPI.HANDLE hFile, com.sun.jna.ptr.IntByReference lpEvtMask, WinAPI.OVERLAPPED ovl)
public static boolean WaitCommEvent(WinAPI.HANDLE hFile, int[] lpEvtMask)
public static int WaitForSingleObject(WinAPI.HANDLE hHandle, int dwMilliseconds)
public static int WaitForMultipleObjects(int nCount, WinAPI.HANDLE[] lpHandles, boolean bWaitAll, int dwMilliseconds)
public static boolean GetOverlappedResult(WinAPI.HANDLE hFile, WinAPI.OVERLAPPED ovl, int[] ntfrd, boolean wait)
public static int GetLastError()
public static int FormatMessageW(int flags, com.sun.jna.Pointer src, int msgId, int langId, com.sun.jna.Pointer dst, int sze, com.sun.jna.Pointer va_list)
public static int QueryDosDevice(java.lang.String name, byte[] buffer, int bsize)