Frage zu ReadFile() overlapped

Gast #4192001
Lesenswert?
• ▲
▼
Hallo,

ich versuche mit ReadFile() Daten auszulesen. Funktioniert eigentlich 
auch ganz gut.
Was mich etwas stört: Wenn ich zuviele Daten anfrage, hänge ich immer in 
GetOverlappedResultEx() für die entsprechenden Millisekunden fest. Ich 
gehe dann auf 1 Byte zurück und lese solange bis nichts mehr kommt. Das 
Ganze ist etwas umständlich.

Kann man nicht irgendwie abfragen, wieviele Daten abholbereit sind? Oder 
gibt es dafür einen anderen Ansatz das Ganze möglichst schnell zu 
implementieren?

Danke, Peter
Gast #4192612
Lesenswert?
• ▲
▼
Clemens L. schrieb:
> Dazu braucht es keine Neugier; das Verhalten von ReadFile() ist
> natürlich davon abhängig, von welchem Gerät (mit welchem Treiber)
> gelesen wird. Ohne diese Informationen ist diese Frage unbeantwortbar.

er hängt aber nicht ein ReadFile fest, sondern in 
GetOverlappedResultEx() und da steht in der Doku das es bei passenden 
Parametern sofort zurückkehrt.
Gast #4193426
Lesenswert?
• ▲
▼
Es geht darum die Latenz zu minimieren.

Das eigentliche Projekt ist natürlich streng geheim, weshalb ich da auch 
nichts näheres dazu sagen kann.

Ich denke, eine gute Lösung ist, bei jedem Timeout die angefragte Menge 
zu halbieren bis ich dann bei 1 angekommen bin.
Dann solange jedes Byte einzeln einzulesen, bis wieder ein Timeout 
kommt. Danach dann wieder die 'volle' Datenrate versuchen. Und schon 
gehts von vorne los.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren