Einzelnen Beitrag anzeigen

Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#7

Re: Zugriffsverletzung bei(Kommunikations)Timeout mit overla

  Alt 4. Okt 2007, 14:06
Zwei Fragen habe ich noch:
1. Also, die HID Komponente ist doch sehr komplex und hilft mir nicht wirklich weiter. Nachdem ich mich jetzt in das Thema Threads am einarbeiten bin, würde ich folgenden Ansatz versuchen:

Ich verpacke einen Lesevorgang in einen separaten Thread:

Delphi-Quellcode:
  bRet := UsbBulkRead(deviceHandle, 0, 0, 0, @USBcb, HEADERSIZE, BytesReceived, lpUSBOverlapped);

  Ret := WaitForSingleObject(USBOverlapped.hEvent, TIMEOUT_VALUE);
Wenn Daten empfangen werden, wird ein Event ausgelöst und der Thread beendet sich. Werden keine Daten empfangen, läuft der Timeout ab und der Thread beendet sich auch. Muss ich in diesem Fall die UsbBulkRead Funktion nicht mehr abbrechen, weil der Thread dann nicht mehr exisitiert? Wäre das so der richtige Ansatz?

2. Die Geschichte mit den Rückgabewerten stört mich immer noch. Beispielsweise der Rückgabewert 6 von GetLastError, wie oben erwähnt. Gibt es eine Möglichkeit herauszufinden, was das genau bedeutet? Finde es auch unelegant die Rückgabewert als 'Magic Values', beispielsweise auf 44 zu prüfen, anstatt auf XYZ_ERROR....

Nochmals vielen Dank.
  Mit Zitat antworten Zitat