ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
700
700
EMPFEHLEN
-
28.09.09 18:39 #1
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:
Code c:1 2 3 4 5 6 7 8
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,
BillieFann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
28.09.09 20:09 #2jsendrow Tutorials.de Gastzugang
Du machst was falsch.
-
28.09.09 20:16 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Hast du denn die Struktur ordentlich initialisiert? Oder wie kommst du an die Struktur? Doch wohl über call-by-reference, oder?
Zeig am besten mal (überblicksmäßig) was der Code macht. Unter deiner Beschreibung kann ich mir jetzt nichts richtiges vorstellen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
29.09.09 09:10 #4
Guten Morgen!
Also ich habe jetzt meinen Code nicht da, aber im Grunde passiert nur folgendes:
Code c:1 2 3 4 5
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { LPWFSRESULT lpWFSResult; LPWFSHWERROR lpWFSHwError; lpWFSResult = (LPWFSRESULT) lParam; lpWFSHwError = (LPWFSHWERROR) lpWFSResult->lpBuffer;
Also, lParam ist der Pointer auf eine WFSRESULT-Struktur. Diese enthält enthält den lpBuffer der in meinem Fall auf eine WFSHWERROR-Struktur zeigt.
Im Debugger kann ich dann lpWFSHwError durchklicken und bekomme eben die ersten zwei Strings angezeigt und dann bad pointer.
Beste Grüße,
BillieFann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
-
29.09.09 18:04 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
05.10.09 09:47 #6
OK - Es war mein Fehler, ich habe etwas übersehen und die falsche Struktur verwendet.
Aber Grundsätzlich, hätte ich eine WFSHWERROR Struktur bekommen sollen, wäre es nicht mein Fehler gewesen. War aber natürlich unwahrscheinlich
Danke!Fann Ég Fjalli Fallega Steina
Faldi Dá Alla Vildi Deim Leyna
Huldi Dar Hellisskúta Heillasteina
Alla Mína Una eth slegu Óskasteina
Ähnliche Themen
-
Pointer vergisst mein ersten Wert...
Von XeoX im Forum C/C++Antworten: 0Letzter Beitrag: 11.01.08, 13:16 -
Invalid Pointer Addition.. wo is denn da n pointer !
Von GartenUmgraben im Forum Borland CBuilder und VCLAntworten: 3Letzter Beitrag: 29.07.06, 16:48 -
[C] Prüfen, ob Inhalt von Pointer auf Pointer existiert
Von mc_gulasch im Forum C/C++Antworten: 4Letzter Beitrag: 07.07.06, 13:34 -
Aus Zwei Pointer Arrays mache ein Pointer Array
Von janosch im Forum C/C++Antworten: 1Letzter Beitrag: 22.12.05, 09:27 -
[C++] Objekt Pointer zuweisen und Methoden auf Pointer realisieren?
Von Ezzz im Forum C/C++Antworten: 6Letzter Beitrag: 02.11.03, 21:23





Zitieren

Login






