わすれなぐさ

自称情報ブログ・備忘録

タグ:NVIDIA

先程GeForce Experienceを起動したらアップデートがありました。どうやら先日新バージョンのGeForce Experience 3.0が配信されたようです。

アップデートをしていると途中で以下のようなエラーが発生し、アップデートが中断されてしまいました。
Microsoft Visual C++ Runtime Library

Runtime Error!

(略)

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

結論から言うとSteamが原因だったようです。以下で解決策を説明します。

解決策

GeForce Experienceをダウンロード
GeForce Experienceはさっきのアップデート作業中にアンインストールされてしまったので、新しくインストールし直します。最新のインストーラーを公式サイトからダウンロードします。
GeForce Experience をダウンロード | NVIDIA

「*ダウンロードの同意」をクリックするとインストーラーがダウンロードされます。現時点では「GeForce_Experience_v3.0.5.22.exe」というファイルがダウンロードされました。

インストール
インストーラー(.exe)をダブルクリックして起動します。起動すると以下のような一時停止の警告が出てきました。これは最初のアップデート作業でも出たと思います。

installer stopped

てっきりここで「次へ(N)」を押せばSteamが自動終了するものだと思っていましたが、終了していなかったようです。仕方ないので自力で終了します。デスクトップ右下のタスクトレイからSteamを右クリックして「終了」します。

それからインストール作業を実行すればインストールに成功すると思います。以上です。

最新版ではアカウントが必要

GeForce Experience 3.0ではNVIDIA、Google、Facebookいずれかのアカウントによるログインが必要みたいです。面倒です。



数日前から、ゲーム(BF4)を遊んでいたら突然クラッシュするようになった。このエラーを一応解決できたので記事にしておく。

症状

BF4をしばらく遊んでいると、突然ディスプレイ全体がブラックアウトして、数秒後に回復する。回復した時、BF4は応答停止していて、下のようなメッセージが表示される。
ディスプレイ ドライバーの応答停止と回復
ディスプレイ ドライバー NVIDIA Windows Kernel Mode Driver, Version 340.52 が応答を停止しましたが、正常に回復しました。
稀に、「DirectX function "GetDeviceRemovedReason" failed with DXGI_ERROR_DEVICE_HUNG ...」といったエラーが出ることもあった。

【追記】解決策

①PCをシャットダウンして、電源を切る
メモリを全部抜く
メモリを全部差す(同じ場所に)
④電源を入れて、PCを起動する

こうすると、何故かはわからないがエラーは起きなくなる。しかしこれはその場凌ぎの解決策らしく、またしばらく経つとこのエラーが発生するようになる。そのときはまたメモリを抜き差しして凌いでいる...

まだ試していないのだが、これとは別に有効そうな解決策が書かれたページを見つけたのでURLだけ貼っておく。
 https://support.microsoft.com/ja-jp/kb/2665946

追記はここまで。これ以降は私が初めてこのエラーに遭遇した時の奮闘記だ。

***

ドライバを弄ってみる でも効果なし

この問題にははっきりした解決策がないらしい。Googleで検索をかけると色々ヒットした。その中でまず軽く以下のことを試した。

・NVIDIAコントロールパネルの設定を変更
・ドライバを削除して再インストール
・その後ubuntuでnvlddmkm.sysの書き換え

 参考
 http://freesoft.tvbok.com/tips/pc/ie10-gpu.html
 http://plaza.rakuten.co.jp/kagurahime2600/diary/201403160000/

でもダメだったので続けて調べてみたところ、メモリ(とグラボの相性)がこのエラーの原因かもしれないらしい。

 参考
 http://www.btopcinfo.com/cat2/post_67.html
 http://www.btopcshop.com/info/support/display.html
 http://iraka09.cocolog-nifty.com/blog/2010/11/post-93b2.html

BIOSのアップデートで解決した例があるようなのでそれをしてみようかと思ったが、そのアップデートの仕方がよく分からなかったので断念。他の解決策としてメモリを物理的に弄ってみることにした。

メモリを弄ってみる

※私がPCの弄り方(物理)に疎かったおかげで、一時はPCが起動しなくなってしまった。よくわからないという人は真似しない方が良い。

PCを開けると、4つのメモリスロットのうち2つのスロットにそれぞれ4GBのメモリが差さっていた。メモリを1つだけにしてみたら解決した例があるようなので、片方抜いてみた。起動すると、下のような文章が現れたので、F2を押した。
CPU or Memory Changed!!! Please enter Setup to configure your system.
Press F1 to Run Setup.
Press F2 to load default values.
普通に起動できたが、BF4をプレイすると変わらず応答停止した。

起動すらしなくなる

今差さっている方のメモリを抜いて、もう片方だけを差してみた。起動してみると、ビープ音長音が3回鳴って起動できなかった。焦ったがこれはメモリが差さってない時のエラー音らしいので、カチッと音がするまで強くメモリを押し込むとこのエラーはなくなった。

しかし、メモリをしっかり差しても別のエラーで起動できなかった。Windows起動の途中で以下のような文章が書かれたブルースクリーンが発生した。(ほとんど省略)
A problem has been detected and Windows has been shut down to prevent damage to your computer.
(略) 
*** STOP: 0x0000007B
この後、メモリを両方差して最初の状態に戻したが、同じエラーが表示されて起動することができなかった。

無事起動した 応答停止の問題も解決

調べてみると、PCが起動しないのはBIOSのSATA動作モードの設定というのが影響しているらしい。

 参考
 http://orbit.cocolog-nifty.com/supportdiary/2010/04/stop-0x0000007b.html
 http://coo2coo2.web.fc2.com/tany-pc/how-to/msi/uefi/z68/msi-z68.html

ということで、PCを起動する間に「Del」キーをタンタン叩いてBIOSの設定画面を開いた。設定画面はMSI Click BIOSとかいうやつで、マウスで操作できるGUIをもつ。文字が英語だったので、わかりやすくするために右上の「Language」から言語を日本語に変更しておいた。

「設定」→「拡張項目」→「オンボード機能」と進んで、「SATAの動作モード」を「IDE」から「AHCI」に変更した。これで完了だ。その下にいくつか項目が増えるが、全部「無効」のままにした。

設定をセーブして再起動すると、なんと、起動した!理由がわからないが起動した。

しかもBF4をプレイしても応答停止しなくなった!

...ということで、なんとか解決。

まとめ

効果的だった”かもしれない”行為をまとめると、

メモリを差し直してみる
・BIOSの設定のデフォルト値をロードする(F2を押すやつ)
・BIOSのSATA動作モードを「IDE」から「AHCI」に変更する

いまいち原因がわからなかったが、解決できたのは本当に良かった。 

2016/9/21 更新

win10 directx error unfocused

Windows 8.1やWindows 10では、BF3を起動しようとすると「DirectX Error」が発生するようです。この記事では、その「DirectX Error」の解決方法をいくつか紹介します。なお、私のWindows 10環境では解決策3または4を実行することでBF3をプレイできるようになりました。

※ファイルの拡張子は表示する設定にしておいてください。エクスプローラー上部の「表示」→「ファイル名拡張子」にチェックを入れると、拡張子が表示されるようになります。

解決策1 BF3の互換性設定を変更する

Windows 7ならこの設定で直るかもしれません。

① 「bf3.exe」を探す
BF3のインストール先フォルダ内にあります。ほとんどの人は「C:\Program Files (x86)\Origin Games\Battlefield 3」内にあるはずです。

② 「bf3.exe」を右クリック→「プロパティ」

③ 「互換性」タブで「互換モードでこのプログラムを実行する」にチェック→「Windows Vista (Service Pack 2)」を選ぶ

④ 「OK」

起動できなければ互換性設定は元に戻して大丈夫です。

解決策2 DirectXとVisual Cを再インストールする

あまり効果が無さそうです。飛ばしていただいて構いません。

① DirectXの再インストール
「Battlefield 3\__Installer\directx\redist」内の「DXSETUP.exe」を実行します。

② Visual Cの再インストール
「Battlefield 3\__Installer\vc\vc***\redist」内の「vcredist_x64.exe」を実行します。

解決策3 BF3のバイナリファイルを書き換える

BF3のバイナリファイルを1箇所書き換えます。この方法は成功例が多く報告されており、私もこの方法で解決しました。ただし、マルチプレイではバイナリ書き換えがチートと判断されてキックされる可能性があるのでご注意ください。シングルプレイのキャンペーンだけなら問題なく遊べると思います。

バイナリを書き換える方法は2つあり、有志制作のツールを使う方法(A)とバイナリエディタを使って自分で書き換える方法(B)があります。方法Aのほうが簡単でおすすめです。ただし、そのツールに悪意がないことは保証できませんので、一応自己責任でご利用ください。

方法A ツールを使って自動で書き換える
① 次のページの下の方の「BFExeFix.exe (16 kB - downloaded ***** times.)」をクリックしてダウンロード
Patch program for Battlefield3/4 DirectX Error (CreateSwapChain)

② ダウンロードした「BFExeFix.exe」をダブルクリックして実行

win10 directx error bfexefix

③ 「Find bf3.exe (Battlefiled 3)」をクリックすると「File Path:」が自動で書き込まれます。書き込まれなかった場合は「bf3.exe」のファイルパスを自力で探してください。

④ 「Perform Patch」をクリックするとバイナリが書き換えられます。同時に、バイナリ書き換え前のファイルが「bf3.exe.backup」という名前でバックアップされます。

方法B バイナリエディタを使って手動で書き換える
バイナリエディタで「bf3.exe」のアドレス「01C6AE71」を「99」→「00」に書き換えます。バイナリを下手に弄るとBF3が起動しなくなる可能性があるので注意してください。詳しい手順は以下の通りです。

① 初めにバックアップを作成しておきます。「bf3.exe」をコピーして「bf3.exe.backup」という名前にしてください。

② 次のサイトからStirlingをダウンロード
→ Stirlingの詳細情報 : Vector ソフトを探す!

③ ダウンロードされたファイル(.lzh)を右クリック→「すべて展開(T)...」→「展開(E)」

④ 展開されたフォルダ(stir131)内の「Stirling.exe」を実行

⑤ 「bf3.exe」を画面内にドラッグ&ドロップするなどして開く

⑥ メニューバーの「検索・移動(S)」→「指定アドレスへ移動(J)...」

⑦ 「01C6AE71」と入力(コピペ)して「OK」

⑧ 「00」と入力

⑨ メニューバーの「ファイル(F)」→「上書き保存(S)」して、Stirlingを終了する

解決策3.1 サーバーからキックされたら
マルチプレイでサーバーからキックされ、以下のようなエラーが表示された場合は、PunkBusterを再インストールしてみてください。それでもダメだった場合、書き換えたバイナリファイルを元に戻す必要があります。PunkBusterとは、プレイヤー全員が必ず導入しなければならないチート対策プログラムのことです。
エラーゲームが切断されました:PunkBusterからキックされました。提示された理由:PunkBuster kicked player '******' (for 0 minutes) ... RESTRICTION: Corrupted File/Memory [98080837]

まずはPunkBusterの再インストールを試してみます。

① フォルダ「Battlefield 3」内にある「pbsvc.exe」を実行
② 「Install/Re-Install PunkBuster Service」にチェックされていることを確認して「Next」
③ 同意する場合は「I Agree」をクリック
④ 「Next」が押せるようになったらクリック
⑤ しばらく待って「Tests completed successfully without error.」と表示されたら「OK」
⑥ 「Finish」

これでもサーバーからキックされるようなら、バイナリファイルを元に戻す必要があります。「bf3.exe」を削除してから、「bf3.exe.backup」を「bf3.exe」という名前に変えてください。

解決策4 Windowsのシステムロケールを変更する

Windowsのシステムロケールを変更します。この方法でほとんどの人はBF3を遊べるようになりますが、他のアプリケーションの動作に支障を来す可能性があります(日本限定のゲームが起動しなくなる、文字化けする、等)。

① デスクトップ画面左下で右クリック→「コントロールパネル」を開く

② 「時計、言語、および地域」→「地域」をクリック

③ 「管理」タブで「システム ロケールの変更(C)...」をクリック

④ システムロケールを「英語 (米国)」に変更して「OK」

変更を適用するには再起動してください。

解決策5 AppLocaleを使ってOriginを起動する

2015/2/4 コメントを頂いたので解決策5を追加しました。
BF3 Windows8.1 DirectXエラーをAppLocaleで回避する方法:曹瑜のブロマガ - ブロマガ


MicrosoftからのAppLocaleの提供は終了しました。WebArchiveからであればダウンロード可能ですが、私のWindows 10ではAppLocaleを使ってもBF3を起動できませんでした。

参考


このページのトップヘ