Billie
Erfahrenes Mitglied
Hellas!
Mein Problem ist folgendes, ich schreibe an einem Programm das eine C-API verwendet. Diese API ist aber lediglich die Middleware über die Kommuniziert wird.
Jetzt habe ich folgendes Problem: Ich bekomme eine Struktur mit einem Pointer auf eine weitere Struktur, welche wie folgt definiert ist:
In der API-Dokumentation sind die ersten drei Felder optional - also "points to ... (if any)". dwSize sollte aber immer die Größe des Buffer auf den lbpDescription zeigt angeben.
Nun habe ich beim Zugriff auf die Struktur über JNI eine Zugriffsverletzung verursacht. Genau genommen beim Zugriff auf lpszAppID - lpszLogicalName und lpszWorkstationName zeigen wie gewünscht auf Strings.
Man könnte jetzt annehmen, dass lpszAppID auf NULL zeigt - aber Nein, beim Debuggen mit VC++ zeigt er mir an, dass lpszAppID auf die Adresse "0x00000004" <Schlechtes Ptr> zeigt. dwSize hat einen unmöglichen Wert (1431128403 unsigned long) und lpbDescription wieder <Schlechtes Ptr> bei Adresse 0x4554414c.
Mach ich jetzt einen Fehler oder liegt der Fehler bei der Applikation auf der anderen Seite der Middleware? Die ersten zwei Strings werden beim Debuggen problemlos angezeigt.
Beste Grüße,
Billie
Mein Problem ist folgendes, ich schreibe an einem Programm das eine C-API verwendet. Diese API ist aber lediglich die Middleware über die Kommuniziert wird.
Jetzt habe ich folgendes Problem: Ich bekomme eine Struktur mit einem Pointer auf eine weitere Struktur, welche wie folgt definiert ist:
C:
typedef struct _wfs_hwerror
{
LPSTR lpszLogicalName;
LPSTR lpszWorkstationName;
LPSTR lpszAppID;
DWORD dwSize;
LPBYTE lpbDescription;
} WFSHWERROR, * LPWFSHWERROR;
In der API-Dokumentation sind die ersten drei Felder optional - also "points to ... (if any)". dwSize sollte aber immer die Größe des Buffer auf den lbpDescription zeigt angeben.
Nun habe ich beim Zugriff auf die Struktur über JNI eine Zugriffsverletzung verursacht. Genau genommen beim Zugriff auf lpszAppID - lpszLogicalName und lpszWorkstationName zeigen wie gewünscht auf Strings.
Man könnte jetzt annehmen, dass lpszAppID auf NULL zeigt - aber Nein, beim Debuggen mit VC++ zeigt er mir an, dass lpszAppID auf die Adresse "0x00000004" <Schlechtes Ptr> zeigt. dwSize hat einen unmöglichen Wert (1431128403 unsigned long) und lpbDescription wieder <Schlechtes Ptr> bei Adresse 0x4554414c.
Mach ich jetzt einen Fehler oder liegt der Fehler bei der Applikation auf der anderen Seite der Middleware? Die ersten zwei Strings werden beim Debuggen problemlos angezeigt.
Beste Grüße,
Billie