【アプデ】 Win10v1703CU以降、Microsoft IME使用時に同じキーを押し続けたりするとプログラムが強制終了の可能性

Win10チューニング,WindowsUpdate

2017年12月8日、Microsoftは下記の不具合を発表しました。

今回は、日本語の Microsoft IMEの使用中にメモリ アクセス違反が発生する現象についてご案内します。

現象
Windows 10 Creators Update 以降で、日本語 Microsoft IME を使用中に、大量のキー入力を高速で行うと、メモリ アクセス違反が発生することがあります。

詳細
テキストボックス等の入力可能なコントロールで WM_IME_COMPOSITION メッセージを処理すると、コントロール上で入力された変換文字列を操作することが可能です。

例えば、テキスト ボックスで WM_IME_COMPOSITION メッセージを受信した際に、引数に NI_COMPOSITIONSTR および CPS_COMPLETE を指定して ImmNotifyIME() を呼び出すプログラムを作成すると、ユーザーによって入力された変換文字列を即座に確定させることができます。

ひらがなのみ、カタカナのみを入力として受け付けたいテキストボックス等がある場合は、このようなプログラムを作成することによって、ユーザーの入力支援を行うことができます。

ところが、このような処理を行うプログラムを Windows 10 Creators Update 以降で実行して、大量のキー入力を連続して高速で行った (同じキーを押し続ける等) 場合に、メモリ アクセス違反が発生してプログラムが強制終了することがあります。

原因
Microsoft IME 側の予測変換処理とアプリケーション側の変換処理が並行して高速で実行されたために、文字変換処理に必要な内部データに不整合が生じた結果、メモリアクセス違反が発生していました。

回避策
以下のいずれかの方法を、代替案としてご検討ください。
(a) Microsoft IME の予測変換を使用しない
(b) WM_IME_COMPOSITION メッセージではなく、WM_KEYDOWN メッセージを利用してユーザーが入力したキーを検出し、検出したキーの内容を元に独自で入力文字をテキストボックス等に表示する

この不具合にお悩みの方は、Microsoft IMEの予測変換を無効にしておけば改善されます。予測変換の無効の仕方は下記の記事をご覧くださいませ。