FileStream.Handle プロパティ
現在の FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドルを取得します。
Public Overridable ReadOnly Property Handle As IntPtr
[C#]
public virtual IntPtr Handle {get;}
[C++]
public: __property virtual IntPtr get_Handle();
[JScript]
public function get Handle() : IntPtr;
プロパティ値
この FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドル。または FileStream が閉じられている場合は -1。
例外
例外の種類 | 条件 |
---|---|
SecurityException | 呼び出し元に、必要なアクセス許可がありません。 |
解説
このプロパティは、オペレーティング システムに用意されているシステム コール (Windows では ReadFile など) で使用するオペレーティング システム ハンドルです。この場合、 fread などのファイル記述子を要求する C ライブラリ関数では動作しません。
オペレーティング システム ハンドルは、どの FileStream コンストラクタを呼び出したかによって、同期的または非同期的に開かれます。このハンドルが非同期的に開かれたかどうかを調べるには IsAsync プロパティを使用します。Win32 では、重複 I/O 用にハンドルが開かれ、 ReadFile と WriteFile で異なるパラメータが要求されます。
注意 FileStream を作成し、そのハンドルを渡し、なんらかの操作によってハンドルのファイル ポインタを移動してから、 FileStream を再び使用した場合、データが破損することがあります。複数のスレッドは、同時に同じファイルに対して安全な書き込みを行うことはできません。 FileStream バッファ コードは、そのハンドルを排他的に制御していることを前提にしています。 FileStream が他のプロセスによってファイルのポインタが移動されたことを検出した場合、 FileStream は IOException をスローすることがあります。これを防ぐには、 FileStream がバッファに格納した可能性があるファイルの部分にデータを書き込まないでください。また、その FileStream でメソッドを最後に呼び出したときの位置にファイル ポインタを戻してください。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- SecurityPermission (PInvoke または COM 統合によるネイティブ コードの呼び出しなど、アンマネージ コードを呼び出すために必要なアクセス許可) SecurityPermissionFlag.UnmanagedCode (関連する列挙体)
参照
FileStream クラス | FileStream メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み