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

