現在のプロセスで開いているすべてのハンドルを一覧表示する必要があります。「EnumHandles」のような関数が見つからなかったので、0 から 1000 までのループを作成しようと考えていました。問題は、各ハンドルの名前を取得する方法です。私は c++ を使用しており、OS は Win7 32 ビットです。編集: 名前が必要なハンドルは Mutex です。ミューテックスの名前を比較して、ハンドル ID を取得したい OpenMutex を使用して解決策を見つけたようですが、3 番目のパラメーターに何を渡せばよいかわかりません。
6446 次
1 に答える
5
NTDLL.DLL を使用する必要があると思います。私の知る限り、これは、プロセス、ハンドル、およびその他のシステム情報を監視するすべてのツールが、最終的に Windows で使用する必要があるものです。小さな Win32 ツールで使用しましたが、ハンドルをリストする必要はありませんでした。
そのライブラリの良い紹介とあなたの質問に関連するものについては、ここをチェックしてください。http://forum.sysinternals.com/howto-enumerate-handles_topic18892.html
また、 http://forum.sysinternals.com/enumerate-opened-files_topic3577.htmlの最初の投稿の GetObjectName 関数
Windows でこの種の情報にアクセスするのは大変な作業のように思えるかもしれません。Microsoft がサポートを望んでいないためです。 NTDLL に。これは、ProcessExplorer などのツールが最終的に使用するものです。使い方はそれほど難しくありません: DLL をロードし、適切な関数ポインタを取得して、自分で宣言した構造体をネット上で見つけたもので埋めます。
于 2012-01-03T22:18:31.990 に答える