2012-02-14 20 views
2

私のC++のWindowsアプリケーションでは、ファイルにアクセスするためにCreateFile関数を使用しています。私は私のアプリケーションは、私が取得要求からの私に(同時にファイル内の多くの位置にアクセスすることを望むので、C++のCreateFileとReadFileの非同期呼び出し

DeviceIOControl ReadFile SetFilePointer

:私は私のファイルを制御するためにも、以下の機能を使用していますアプリケーション)私は自分のアプリケーションが非同期であることを望みます。私はそこにFILE_FLAG_OVERLAPPEDと呼ばれる旗があるのを見ましたが、私はそれをどのように使用するのかわかりません。 登録が必要なコールバックはありますか? あなたはここで、それはあなたがちょうど新しいスレッドを生成し、その第二のスレッドから同期()ReadFieを呼び出すことができます

おかげ

+0

RTFM:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686358%28v=vs.85%29.aspx –

答えて

0

参考になるサンプルをコピーすることができます。イベントまたはクリティカルセクションなどの同期オブジェクトを使用して、両方のスレッドを同期させる必要があります。

シングルスレッド非同期アプローチを主張する場合は、ReadFile()またはReadFileEx()を呼び出してOVERLAPPED構造体を渡します。構造体は、ファイルの読み込みが完了すると呼び出されるコールバック関数を提供します。

コールバック関数を呼び出すには、呼び出し元のスレッド(ReadFile()またはReadFileEx()を呼び出したスレッド)がalertable stateになければなりません。

待機関数の1つを使用してスレッドを中断し、コールバック関数を呼び出すread関数を待つだけです。

+0

または、I/O完了ポートを使用してください。 –

関連する問題