Hallo,
das Probleme ist aufgetreten, nachdem ich beide TO-Funktionen 'IowKitSetWriteTimeout()' und 'IowKitSetTimeout()' benutze.
Ich habe versucht, die Ursachen einzugrenzen und weiter unten einen Testcase angefügt, mit dem genau dieses Problem nachgestellt werden kann (?).
Er beschränkt sich auf wenige IowKit* Funktionsaufrufe. Die Sinnfälligkeit sei dahingestellt, es sollte trotzdem ohne den o.g. Absturz funktionieren. In der Original-Anwendung sind noch diverse I2C-Routinen enthalten, die bis jetzt problemlos funktionieren.
Beim Beenden der Anwendung stürzt sie beim IowKitCloseDevice()-Aufruf ab ("XY.exe funktioniert nicht mehr ... -> Programm schließen").
IOW: IOW56, FW version 2.0.0.1
OS: Windows 10 Enterprise, Vers. 1803
Prozessor: Intel i7-2640 @ 2.80GHz
Anbei der Testcase (ANSI C). Wenn man einen der mit *) markierten Aufrufe auskommentiert, gibt es keine Probleme.
Vielleicht kann mir jemand weiterhelfen?
--
#include <stdio.h>
#include "iowkit.h"
IOWKIT_HANDLE ioHandle;
USHORT buffer[9];
int main (int argc, char* argv[]) {
ioHandle = IowKitOpenDevice();
if (ioHandle != NULL) {
printf("firmware revision: 0x%04X\n", IowKitGetRevision(ioHandle)); // *)
IowKitGetSerialNumber(ioHandle, buffer); // *)
// set write + read TO values to 1000ms
//-------------------------------------
IowKitSetWriteTimeout(ioHandle, 1000); // *)
IowKitSetTimeout(ioHandle, 1000); // *)
IowKitCloseDevice(ioHandle);
}
return 0;
}
IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Moderator: Guido Körber
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Hallo,
Ich habe den Code (mit einer kleinen Änderung beim 'buffer' WCHAR anstelle von USHORT) 1:1 kopiert und ausgeführt und er läuft ohne Probleme bei mir. Keine Fehler, keine Abstürze.
Mein System läuft ebenfalls auf Win10 Enterprise mit allen Updates.
Ich habe den Code (mit einer kleinen Änderung beim 'buffer' WCHAR anstelle von USHORT) 1:1 kopiert und ausgeführt und er läuft ohne Probleme bei mir. Keine Fehler, keine Abstürze.
Mein System läuft ebenfalls auf Win10 Enterprise mit allen Updates.
Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Danke für die schnelle Antwort.
Welcher Compiler wurde benutzt?
Vielleicht liegt es ja daran...
Welcher Compiler wurde benutzt?
Vielleicht liegt es ja daran...
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Wir nutzen Visual Studio 2017. Aber ich wüsste nicht, warum es am Compiler liegen sollte.
Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Hallo,
"Kaum macht man es richtig - funktioniert's" :)
soll heißen: Ursache gefunden
Für den Fall, dass es andere auch interessiert:
Am Compiler lag es nicht. Ich habe kein Visual Studio, ich bin mehr oder weniger auf gcc/g++ (MinGW32) angewiesen.
Und da lag es an
Folgender Compiler-Aufruf brachte nun den "Erfolg":
> gcc testcase.c -L. -liowkit -include windows.h -o testcase
"Kaum macht man es richtig - funktioniert's" :)
soll heißen: Ursache gefunden
Für den Fall, dass es andere auch interessiert:
Am Compiler lag es nicht. Ich habe kein Visual Studio, ich bin mehr oder weniger auf gcc/g++ (MinGW32) angewiesen.
Und da lag es an
- fehlendem "include <windows.h>"
- da hatte ich mir mit -U_WIN32 und der Verwendung von USHORT (s. Korrektur von C.Jung) beholfen
- meinen bescheidenen Kenntnissen bzgl. Compiler-Aufruf und Einbinden der Import-Lib
Folgender Compiler-Aufruf brachte nun den "Erfolg":
> gcc testcase.c -L. -liowkit -include windows.h -o testcase
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW56: Programm-Absturz beim Aufruf von 'IowKitCloseDevice()'
Ah ok, klar VS bindet gleich die Windows.h ein und über die Projekteinstellungen die lib-Datei.
Ich hatte den gcc bisher nur unter Linux eingesetzt und da haben wir ja eine passendes SDK.
Ich hatte den gcc bisher nur unter Linux eingesetzt und da haben wir ja eine passendes SDK.