只有一个参数
---
一个指向
Windows SYSTEMTIME
结构体的指针 。 而且 , 每个结
构体成员的类型是
16bit
长度的无符号整型。根据这些信息,你能够创建一个完
全描述
GetLocalTime()
函数的接口,如
Listing 2
中所示:
Listing 2. Kernel32.java
// Kernel32.java
import com.sun.jna.*;
import com.sun.jna.win32.*;
public interface Kernel32 extends StdCallLibrary
{
public static class SYSTEMTIME extends Structure
{
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;
}
void GetLocalTime (SYSTEMTIME result);
}
2.1
2.1
2.1
2.1 、 Kernel32
Kernel32
Kernel32
Kernel32 接口( The
The
The
The Kernel32
Kernel32
Kernel32
Kernel32 interface
interface
interface
interface )
因为
JNA
使用通过一个接口来访问某个库中的函数,
Listing 2
表示了一个描 述
GetLocalTime()
的接口。根据约定,我把接口命名为
Kernel32
是因 为
GetLocalTime()
在
Windows
的
kernel32.dll
库。
这个接口必须继承
com.sun..jna.Library
接口 。 因为
Windows API
函数遵循
stdcal l
调用协议(
stdcall calling convention
) ,为
Windows API
申明的接口也必须继 承
com.sun.jna.win32. StdCallLibrary
接口。因此这个接口共继承了
Library
和
com.sun.jna.win32.StdCall
两个接口。
在前面 , 你已经知道了
GetLocalTime()
需要一个指向
SYSTEMTIME
结构体的指
针作为它唯一的参数。因为
Java
不支持指针,
JNA
是通过申明一 个