はじめに
この記事は、仕事(ソフトウェア開発)の中で、ある特定のプロセスのハンドルリークを何とかしようとしたときの備忘録です。
背景
筆者の本業(ソフトウェア開発)の同じ部門の別プロジェクトで、ハンドルリークに苦しんでいるプロジェクトがあり、技術的になんとかならないか?という相談を先日受けました。
聞いたところによると、問題は、ある特定のプロセスがハンドルリークしていて、そのプロセスが参照しているIntelのグラフィックドライバのライブラリ内でハンドルの解放を行っていなかったことまでは分かったのですが、リークし続けるハンドルを何とか解放できないか?ということで、C#のアプリとして、他のプロセスの抱えているハンドル一覧とハンドルの解放を行う方法がないかを調査しました。
最近は、プログラム的な実現手段は、ネット検索すれば、ほとんど入手できるといっていいほど充実しており、このサイトも、そういったことができるといいと思っていますが、中には、ネット検索でもほとんど見つからないこともあります。
今回のことは、まさにそれでした。
まず、あるプロセスのハンドル一覧を取得する、という「目的」をキーワードにしても、検索で引っかかることは、ほとんどがハンドル数の取得までで、ハンドル一覧を取得する方法は、日本語のサイトでは見つからず、海外のサイトでポツポツ見つかる程度でした。
ということで、以下、いろいろ調査して動作確認までできた結果をコードで書き残しておきます。
備忘録につき、参考までに....