1

pInvokeを介してループ(つまり、\。\ PhysicalDrive1、次に\。\ PhysicalDrive2、...)を介して毎回異なる物理デバイスパスでCreateFileを呼び出し、返されたハンドルを使用して他の低レベルを実行するC#コードがあります。 Windowsのもの。ループの終わりに、ハンドルでCloseHandleを呼び出します。

デバッグ中に、ハンドルのint値がループを通過するたびに同じであることに気付きました。これは、予期されたもの(Windowsがハンドルを再利用しているだけ)または予期しないもの(最後のパスでハンドルが解放されなかった)のいずれかであることがわかります。

したがって、これが予期される(または少なくとも正しくない)動作であるかどうかを確認したいだけです。

4

1 に答える 1

3

ハンドルは、カーネル内のテーブルへのエントリへの単なるインデックスです。ハンドルを繰り返し開いたり閉じたりする場合、テーブル内のまったく同じエントリ、つまり同じインデックスを取得することは完全に可能です。

これは実装固有であり、新しいリリース、サービスパック、またはQFEによって変更される可能性があることに注意してください。

于 2009-11-12T18:15:56.053 に答える