Variavel tipo ponteiro em java?

ae galera me surgiu outra duvida estou fazendo a interface de uma dll mas o metodo dessa dll é o seguinte


void FAR PASCAL XPComVersion (char far * sBuffer // Ponteiro para buffer com ao menos 25 caracteres
);

como eu declaro isso na minha interface java??


public void XPComVersion (char far * sBuffer // Ponteiro para buffer com ao menos 25 caracteres
  );

estou usando netbeans e jna para comunicar com essa dll…eu ja consegui a comunicaçao o problema agora sao esses parametros q nao existem em java por exemplo ponteiro…como eu passaria esse tipo de parametro??

em java os parâmetros já são ponteiros, não precisa do ‘*’

desse jeito você já esta usando a variavel como ponteiro para a referencia que for ser passada.

public void XPComVersion (char sBuffer // Ponteiro para buffer com ao menos 25 caracteres );

Bom, você leu a documentação que lhe passei mas não entendeu bulhufas. O que você tem de fazer é o seguinte:

O C está esperando que você passe o endereço de um buffer de memória já reservado, para ele poder copiar de volta os caracteres. No seu caso, você teria de declarar seu método usando JNA com um parâmetro byte[]. Então o método deveria ser declarado como public void XPComVersion (byte[] sBuffer).

Na hora de chamar o método XPComVersion, você deve passar um byte[] já inicializado com um tamanho suficiente para o método em C poder copiar o valor desejado.

Native.toString

Depois, você tem de pegar o tal byte[] e chamar o método “Native.toString”. Vou dar um exemplo mais ou menos:

// Supondo que você tenha de deixar reservado 100 caracteres
byte[] version = new byte[100];
....XPComVersion (version);
String strVersion = Native.toString (version); 

[/code]

vlw thingol e malz eu vo dar uma olhada mais a fundo no link q vc me passou…eh q atualmente estou sem tempo eu dei uma olhada rapida…e como estava com preça postei no forum novamente

mas vlw a ajuda novamente amanha pela manha ja vou tentar esse codigo q vc me passou. Obrigado

consegui fazer funcionar mostrar a versao da dll usando byte[] como tipo de variavel…mas agora me surgiu outra duvida
fiz o seguinte código em um botao para pegar os valores recebidos pelo hardware

conta quantos bytes ha no buffer de recepçao

 dll.ComGetnRx(3);

1 parametro eh o canal de comunicação, 2 parametro variavel q vai receber os bytes do buffer de recepção, 3 parametro o numero de bytes que serao pegos do buffer de recepção

dll.ComRxData(3, sBuffer,(int) Resultado);
byte[] sBuffer = new byte[256];
      long Resultado = dll.ComGetnRx(3);

      dll.ComRxData(3, sBuffer,(int) Resultado);

      String ValorBuffer = Native.toString(sBuffer);
    
      System.out.println(ValorBuffer);
      System.out.println(Resultado);

só q quando mando executar ele retorna esse valor pra mim

þþ??¾???¾ÿ
19