2009-01-30 12 views
6

¿Cómo se puede asignar la operación siguiente para Java?
JNA Struct y Puntero mapeo

VOID WriteToStruct (BOOL * Estado, STRUCT_MSG RecBuff)

Lo que hace esta función:
1) rellena la RecBuff struct estado
2) Actualizaciones

¿Cómo puedo asignar a un puntero booleano en Java y acceder a los datos de estructura actualizados por la función?

Respuesta

7

que estaba buscando otra cuestión relativa a JNA y estructuras, y Google me redirige aquí. Espero que esto ayude.

De JNA API

Para pasar una estructura por valor, primero definir la estructura, para definir una clase vacía de la que implementa Structure.ByValue. Utilice la clase ByValue como argumento o tipo de retorno.

// Original C code 
typedef struct _Point { 
    int x, y; 
} Point; 

Point translate(Point pt, int dx, int dy); 

// Equivalent JNA mapping 
class Point extends Structure { 
    public static class ByValue extends Point implements Structure.ByValue { } 
    public int x, y; 
} 
Point.ByValue translate(Point.ByValue pt, int x, int y); 
... 
Point.ByValue pt = new Point.ByValue(); 
Point result = translate(pt, 100, 100); 
1

Usted puede utilizar la clase ByReference para pasar valores de referencia. Presumiendo que BOOL es una int puedes usar IntegerByReference.