C28604

警告 C28604: タイムアウト 0 で SMTO_ABORTIFHUNG を指定して SendMessageTimeout を呼び出さないでください

アプリケーションが SMTO_ABORTIFHUNG フラグと共にタイムアウトの長さ 0 を指定して SendMessageTimeout を呼び出すと、コード分析ツールによってこの警告が報告されます。 このように SendMessageTimeout を使用すると、タイムアウトの長さに効力がなく、呼び出しがブロッキング呼び出しとして扱われるため、問題を招く可能性があります。

タイムアウトの長さに 0 以外の値を指定してください。

次の関数呼び出しを行うと、プロセスが無期限に応答しなくなる可能性があります。

fNeedsCallbackEvent = (0 != SendMessageTimeout(
_hwnd, 
WM_NULL, 
0,
0, 
SMTO_ABORTIFHUNG,
0,
&dwResult)); 

次の関数呼び出しの場合、この問題はありません。

fNeedsCallbackEvent = (0 != SendMessageTimeout(
_hwnd, 
WM_NULL, 
0,
0,
SMTO_ABORTIFHUNG,
1000,  
&dwResult));