Print Screen がうまくいかない時はリソース不足の可能性がある。PagedPoolSize を ffffffff にすると解消するかもしれない。
ただし XP まで。Vista 以降は潤沢にリソースを確保できる。
Ask CORE : リソース不足について - 第 3 回
http://blogs.technet.com/askcorejp/archive/2009/07/07/3261763.aspx
いろんなアプリケーションを起動しながら画面のスクリーンショットを取ろうとすると、うまくいかないことがある。
クリップボードの中身を見てみると、スクリーンショットは取れているんだけど白黒だったりする。あるいは、メモリが不足している旨のメッセージが出たりする。
そんな時は「リソース」が足りないかもしれない。「メモリ」とはちょっと違う。
メモリよりも限定された、OS が専用に確保する領域。メモリの一部。
いくらメモリがたくさんあっても、メモリよりも少ないリソースの方が使い切られてしまうと、そこでエラーになる。「メモリはまだ使い切られていないのに」と思っても、「足りません」の一点張り。
Process Explorer と Debugging Tools for Windows を使うと、リソースの使用状況が分かる。
(使い方は上記の URL で確認できます)
Process Explorer を起動して「Options」メニューの「Configure Symbols」で下記のようにやると、「System Information」で「Paged Limit」と「Nonpaged Limit」が見えるようになる。Debugging Tools for Windows は予めインストールしておく。
Dbghelp.dll path: C:\Program Files\Debugging Tools for Windows\dbghelp.dll
Symbols path: http://msdl.microsoft.com/download/symbols
System Information の Kernel Memory の欄がこんな感じになっている。
(メモリは 2GB)
Paged Virtual が Paged Limit に迫っていて、待ったなしの状況。
こうなってるともう、色んなことが残念になってくる。
- スクリーンショットが取れなくなる
- ウィンドウの描画が崩れる
- 文字が消える
- アイコンが黒くなる
- ネットワークフォルダにアクセスできなくなる
- 印刷に失敗する
この上限値を決めているのがレジストリ。OS 起動時に、搭載されているメモリの容量をもとに上限が決定される。
だけど、「もうちょっと多めに取ってもいいんじゃない?」っていうぐらい控えめなことがある。
上の図はかなり控えめだと思う。
レジストリはここ。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
ここにある PagedPoolSize はデフォルトが 0。これを ffffffff にする。
0 は OS が上限を計算するの意。ffffffff はシステムの制限いっぱいまで。
そして再起動。