Windows XPでReadFile
をタイムアウトで実行する方法はありますか?Windows XPでC++パイプReadFile関数がタイムアウトを設定しました
もしそうでなければ、他のスレッドからパイプを壊す方法はありますか?
Windows XPでReadFile
をタイムアウトで実行する方法はありますか?Windows XPでC++パイプReadFile関数がタイムアウトを設定しました
もしそうでなければ、他のスレッドからパイプを壊す方法はありますか?
Overlapped I/Oを使用して非同期ReadFileを設定します。 CancelIOExを使用して、いつでも読み取りを取り消すことができます。
名前付きパイプについて話しているとすれば、普通の方法は重複した読み込みを行い、WaitForSingleObject
(またはWaitForMultipleObjects
)を呼び出すときにタイムアウトを指定することです。 /タイムアウトが切れると、待ちはWAIT_OBJECT_0
の代わりにWAIT_TIMEOUT
を返します。
どのように重ねて読み込むのですか? –
@Erik:名前付きパイプを作成するときに 'FILE_FLAG_OVERLAPPED'を指定し、' ReadFile'(または 'ReadFileEx'などの任意の数の呼び出しを呼び出すときに' OVERLAPPED'構造体を渡します - Microsoftは重複するI/O)。 –