対象プロセスの実行速度調整機能
画面説明
参考画面(新型32ビット版「UsaMimi32.exe」) 説明用画面(旧来の32ビット版「UsaMimi.exe」) ■プロセスの実行速度を調整 代替アプローチ版について 64ビット版「UsaMimi64.exe」では、メニューの「プロセスの実行速度を調整 代替版」から、既存の実行速度調整機能の代替アプローチ版を使用することができます。この代替アプローチ版は、既存の実行速度調整機能よりも処理の安定性を高めています。しかしその反面、解析対象から実行速度調整が行われていることを検出されやすくなっています。そのため、状況に応じて、この2つの実行速度調整機能を使い分けてください(同時使用は不可)。なお、異なるのは内部的な処理であり、操作画面は既存の実行速度調整機能と同じです。ただし、この代替アプローチ版では、アタッチ用DLLに必ず「UsaSpeed64Alt.dll」あるいはそのリネーム後のDLLを指定してください。他の「UsaSpeed**.dll」は使用できません。 ■アタッチ用DLL(DLL名変更可)/実行速度調整精度(ミリ秒) 下記「UsaSpeed.dll」は、新型32ビット版の「UsaMimi32.exe」使用時は「UsaSpeed32.dll」に読み替えてください。「UsaSpeed32.dll」は、旧来の32ビット版「UsaMimi.exe」が使用する「UsaSpeed.dll」とは互換性がありません。同様に、64ビット版の「UsaMimi64.exe」使用時は「UsaSpeed64.dll」に読み替えてください(上記の代替アプローチ版では「UsaSpeed64Alt.dll」)。 この実行速度調整に使用するDLLのファイル名(「UsaSpeed.dll」あるいはその変更後の名前)や、調整を行う間隔(ミリ秒数)を指定します。 旧来の32ビット版「UsaMimi.exe」の「アタッチに用いるAPI関数のエントリを修復」は、当ソフトウェアがアタッチに使用するAPI関数の開始アドレス以降が書き換えられている場合に、本来のバイナリデータで書き戻します。この書き戻し機能はWindows Vista以降では正常に動作しません。 もしアタッチ時に不具合が生じた場合は、再アタッチ前に、この欄で指定するDLL名を変更し、同梱ファイル「UsaSpeed.dll」をその指定した新しい名前に変更してみてください。 過去のバージョンで同梱・使用していた「UsaSpeed2.dll」は「UsaSpeed.dll」に統合しました。現バージョンでは「UsaSpeed2.dll」は不要であり削除可能です。INIファイルで「UsaSpeed2.dll」が設定されていた場合は、自動的に表示を「UsaSpeed.dll」へ変更します。 ■管理対象API関数/速度調整時の最低経過秒数(ミリ秒) 実行速度調整のためにAPIフックを行う対象のAPI関数を指定します。通常はデフォルトで指定されるAPI関数で速度調整が可能ですが、必要に応じて対象API関数を追加してください。「最低経過秒数」とは、処理待機を行うタイプのAPI関数で、実行速度調整にともない変更される処理待機時間に下限を設定するものです。この下限は実行速度調整の安全性確保のためのオプションです。この秒数を少なく設定して[秒数変更]ボタンを押せば、速度増加時のさらなる高速化が見込まれますが、安全性は低下します。「INFINITE修正」は、API関数が本来無制限に待機する処理を、「最低経過秒数」だけ待機する処理に書き換えるものです。 もしアタッチ時に不具合が生じた場合は、再アタッチ前に対象API関数を変更してみてください。新型32ビット版の「UsaMimi32.exe」と64ビット版の「UsaMimi64.exe」では、API関数リストの上から5つだけへの設定変更を推奨します。旧来の32ビット版「UsaMimi.exe」では、対象API関数を「GetTickCount」、「timeGetTime」、「[Nt]QueryPerformanceCounter」のいずれかだけに絞り込んでみてください。 ■特定API関数呼び出し時にスレッドを停止してCPU占有率を低減/停止秒数(ミリ秒) 一般的なプログラムでCPU占有率の上昇の原因となりうる、特に繰り返し呼び出される処理を操作します。このような処理において使用されることが多いAPI関数の呼び出し時に、スレッドを指定秒数だけ一時停止してCPU占有率を低下させます。停止秒数の数値を上げすぎるとプログラムの異常動作を招く可能性があります。この機能は、市販PCの高スペック化等により需要が減少したため、64ビット版「UsaMimi64.exe」や新型32ビット版「UsaMimi32.exe」では実装していません。 ■アタッチ処理関連設定 アタッチ処理実行に関連する追加設定です。「同名プロセスにもアタッチ」は、対象プロセスと実行ファイル名が同じプロセス全てにアタッチを試行します。これは、一つのアプリケーションの実行処理が複数のプロセスで構成されるケースを想定しています。「左アタッチ処理中は全プロセス停止」は、「同名プロセスにもアタッチ」を行う際の安全性向上を図るオプションです。なお、ブラウザなどでセキュリティ上の制約が施されているケースでは、実行処理を構成する複数の同名プロセス全てへのアタッチが行えず、その結果実行速度調整に失敗することがあります。「CPU1のみ使用」は実行速度調整中の安定性向上のため、アタッチ処理時に対象プロセスや同名プロセスが使用可能なCPUを1つだけに設定するオプションです。この使用可能なCPUの設定変更は、実行速度調整中に対象プロセスが強制終了するケースへの対処を想定しています。 ■アタッチ 設定内容を元に対象プロセスでAPIフックを行い、実行速度調整を開始します。 ■デタッチ 対象プロセスでのAPIフックを解除して実行速度調整を中止します。この処理は安全性が確保できないこともあります。アタッチ時に「同名プロセスにもアタッチ」や「CPU1のみ使用」のオプションを使用した場合は、同名プロセスへのデタッチ処理やCPU使用設定の復元も行います。 ■秒数変更 アタッチ後に実行速度調整での各種設定秒数を一括変更します。「INFINITE修正」の設定変更も行えます。 ■ホットキー有効 [キー設定]ボタンで設定を保存したホットキーを有効にします。ホットキーの設定が保存されていないと、この機能は動作しません。ホットキーを有効にすれば、対象プロセスのウィンドウが前面に表示された状態でも、任意のキーを押し下げすることで、加速・減速・速度100%(1倍)化などが可能になります。 ■キー設定 ホットキーの設定や設定保存を行います。初期設定で表示されるホットキーの候補は、設定の保存はされていません。ホットキーを使用する場合は、必ず任意のホットキーを指定した上で設定の保存を行ってください。 ■実行速度(%) スライダー(トラックバー)をドラッグすることで実行速度をリアルタイムに変更可能です。スライダーを使用するならば、[左の指定値で実行速度(%)変更]ボタンの押し下げは不要です。パーセンテージでは1倍速=100となります。また、「速度(%)数値指定:」右のエディットボックスに実行速度をパーセンテージで数値入力してから、[左の指定値で実行速度(%)変更]ボタン押し下げでも実行速度を変更可能です。数値入力で設定可能な速度は1%から99999%です。[プロセス停止]ボタンは対象プロセスの実行を完全に停止させます。安全のため同名プロセスは速度調整対象になっていても停止しません。 |
注意事項
|
基本的な操作の流れ
●ダイアログ表示
|
加速・減速に失敗する原因と対処方法
ユーザーの方々からいただいたフィードバックによれば、加速・減速に失敗するケースには以下が挙げられます。 ・「うさみみハリケーン」の古いバージョンを使っていた ・現在では非推奨のUsaMimi.exeを使っていた ・64ビット版のアプリケーションやゲームを32ビット版のUsaMimi.exeかUsaMimi32.exeで実行速度調整しようとした ・32ビット版のアプリケーションやゲームを64ビット版のUsaMimi64.exeで実行速度調整しようとした ・「うさみみハリケーン」を管理者権限で起動していなかった ・管理対象API関数の設定が不適切だった(初期設定のままでは不適切になるケースあり) 新型32ビット版の「UsaMimi32.exe」と64ビット版の「UsaMimi64.exe」では、不具合発生時にはAPI関数リストの上から5つだけへの設定変更を推奨 ・クラッシュ回避策としての「速度調整時の最低経過秒数(ミリ秒)」の設定が不適切だった(初期設定のままでは不適切になるケースあり) ・クラッシュ回避策としての「CPU1のみ使用」を設定していなかった(通常は設定不要) ・対象ゲームは複数のプロセスで構成されるが「同名プロセスにもアタッチ」を設定していなかった 特に、対象プロセスが32ビット版あるいは64ビット版かに合わせて、同じビット版の「うさみみハリケーン」を使用しないと失敗します。32ビット版のアプリケーションやゲームにはUsaMimi32.exe、64ビット版のアプリケーションやゲームにはUsaMimi64.exeを使用してください。また、「うさみみハリケーン」を管理者権限で起動しないと、対象プロセスを認識できないこともあります(管理者権限での起動方法)。さらに、対象のゲーム等によっては、初期設定のままでは不適切な設定になるケースがあるため、必要に応じて、このヘルプの記述を参照して設定を変更してください。 |
設定保存について
基本設定は[アタッチ]ボタンや[秒数変更]ボタンが押された際にINIファイルへ保存します。ただし、対象プロセスの実行状況によって管理可能なAPI関数が変化するため、管理対象API関数の設定は保存しないことにしました。また、推奨できない「INFINITE修正」の有効化設定も保存しません。 ホットキー設定の保存はホットキー設定用ダイアログ上から任意で行います。 |
補足
RDTSC命令で取得できるプロセッサのタイムスタンプ・カウンタは時間経過に連動する値といえます。しかし、複数CPU搭載あるいはマルチコアCPUのケースでの取得値整合性保持のため、SetThreadAffinityMask関数あるいは一時的なSetProcessAffinityMask関数併用が必須で、さらに経過時間取得には周波数算出等が必要となり煩雑です。そのため、アプリケーション側でのこの命令を用いた経過時間情報取得と処理実行タイミングの制御は、必要性と実装工数からみて現実的ではありません。 ブラウザ上でFlashムービーの再生速度を加速する場合は、管理対象API関数に「WaitForMultiple/SingleObjects(Ex)」を指定し、「最低経過秒数」には35ミリ秒を設定、さらに「INFINITE修正」を有効にします。この設定でアタッチ後に、[秒数変更]ボタンで「最低経過秒数」の秒数を少しずつ減少させてみて下さい。なお、「最低経過秒数」を極端に少なくすると、ブラウザの強制終了等誤動作を招きます。また、この再生速度変更の効果は実行環境のスペック等の影響を受けると考えられます。 (動作確認:IE/FireFox + FlashPlayer 9,0,28,0) |