先不说了,上代码 
import org.xvolks.jnative.JNative; 
import org.xvolks.jnative.Type; 
import org.xvolks.jnative.exceptions.NativeException; 
import org.xvolks.jnative.pointers.Pointer; 
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory; public class GetComePhone extends Thread{ 
int ch; 
String source; 
String method; 
public GetComePhone(int ch,String source,String method){ 
this.ch = ch; 
this.source  =source; 
this.method = method; 

public String getValueFromPoniter(Pointer p){//就这我怎么也去不到指针里的值,一个char型指针到底要怎么取值啊 
String c = "::"; 
for(int i=0;i <p.getSize();i++){ try { 
c =c+p.getAsByte(i); 
} catch (NativeException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} } 
return c; 

@Override 
public void run() { 
// TODO Auto-generated method stub 
JNative jn = null; 
int i = 0; try { 
jn = new JNative(source,method); 
jn.setRetVal(Type.INT); 
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(8*2)); 
jn.setParameter(0,ch); 
jn.setParameter(1,p); 
jn.setParameter(2,1); 
jn.invoke(); 
System.out.println(jn.getRetValAsInt()+"```````````"+getValueFromPoniter(p)); 
} catch (NativeException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (IllegalAccessException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
}finally{ 
if(jn!=null){ 
try { 
jn.dispose(); 
} catch (NativeException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (IllegalAccessException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 



} 我这是调用录音卡里面的获取来点号码的方法 
硬件里的方法是 5.7.1  int WINAPI TvcGetCallerId(int ch,char *szBuf,int want) 参数说明: 
ch 
通道号 
szBuf 
指针,指向callerid 内容 
want 
最多返回数 
函数返回: -1 
调用失败 其它 
实际返回的主叫号码个数 
功能描述:取得指定通道主叫号码 注意事项:1)对于DTMF制式主叫号码,应用程序可在第一声振铃时调用此函数,若此时没有返回有效主叫号码,             表示此次被叫没有主叫号码 2) 对于FSK制式主叫号码,应用程序可在第一声振铃后一直轮询。直到通道状态进入ch_rining或   第二声振铃到来还没有返回有效主叫号码,表示此次被叫没有主叫号码 
请求高手指点·····