You さんのテストプログラム相当の処理を KbMedia Player 本体に組み込んで実験してみました。
SetProcessInformation を使わない場合、最小化時にタイマーの精度が悪くなっていることは
確認出来ましたが、デバイスを開いている間は問題ないようです。
> Windows 11以降、ウィンドウ所有プロセスがエンド ユーザーに完全に隠された、最小化された、またはその他の方法で目に見えない、
> または聞き取れなくなる場合、Windows は既定のシステム解像度よりも高い解像度を保証しません。
デバイスを開いていると「聞き取れなくなる場合」に該当しなくなるのでしょう。
うまく出来ていますね。
ただし、例えば 64bit 版で 32bit 版のデバイスプラグインや演奏プラグインを使う場合、本体とは
別プロセスでデバイスを開くことになる為、最小化時にタイマーの精度が低くなることが確認出来ます。
ですが、最小化時においてもタイマーの精度が高くないと困るのはデバイスプラグイン/演奏プラグイン
が実際に動作しているプロセス内においてであって、本体は困りません。
したがって本体が常時タイマーの精度を高くしておく必要はなさそうです。
kbrunkpi.exe の方も、デバイスを開いている間は精度が保証されるのであればやはり
SetProcessInformation を呼び出す必要はなさそうです。
> 本体でも同じことをしておけば kbrunkpi.exe の方では何もしなくても良さそうです。
これは勘違いですね。
Win10 2004 以降では kbrunkpi.exe の方でも timeBeginPeriod は必要ですね。
You さんのテストプログラムのおかげで SetProcessInformation の使い方が簡単に理解出来た
のでとても助かりました。結果的に必要がないことが分かりましたが。
記事編集