名前付きパイプの読み取り操作にタイムアウトを設定しようとしています。
名前付きパイプから読み取るために、ReadFile
関数を使用しています。
関数でこの関数にタイムアウトを設定できることを読みましたが、SetCommTimeouts
使用しようとすると、システム エラー 1:「関数が正しくありません」が発生します。
これが私のコードです(これはクライアント側です):
m_pipe = CreateFileA(pipeName, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
if (m_pipe != INVALID_HANDLE_VALUE)
{
DWORD mode = PIPE_READMODE_MESSAGE | PIPE_WAIT;
ok = SetNamedPipeHandleState(m_pipe, &mode, NULL, NULL);
COMMTIMEOUTS cto;
cto.ReadTotalTimeoutConstant = 1000;
BOOL time = SetCommTimeouts(m_pipe, &cto);
}
私は何か間違ったことをしていますか、それともSetCommTimeouts
メソッドはパイプで使用することを想定していませんか? 読み取りタイムアウトを取得する他の方法はありますか?