FileStream.Handle プロパティ



この API は現在使われていません。

現在の FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドルを取得します。Gets the operating system file handle for the file that the current FileStream object encapsulates.

 virtual property IntPtr Handle { IntPtr get(); };
[System.Obsolete("Use SafeFileHandle instead")]
[System.Obsolete("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.")]
[get: System.Security.SecurityCritical]
[System.Obsolete("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.")]
[System.Obsolete("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.")]
public virtual IntPtr Handle { get; }
member this.Handle : nativeint
Public Overridable ReadOnly Property Handle As IntPtr


この FileStream オブジェクトによってカプセル化されるファイルのオペレーティング システム ファイル ハンドル。または FileStream が閉じられている場合は -1。The operating system file handle for the file encapsulated by this FileStream object, or -1 if the FileStream has been closed.



呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.


このプロパティは、オペレーティングシステムが提供するシステムコール (Windows の ReadFile など) で使用するオペレーティングシステムハンドルです。This property is an operating system handle for use with operating-system-provided system calls (such as ReadFile on Windows). freadなどのファイル記述子を予期する C ライブラリ関数では機能しません。It will not work with C library functions that expect a file descriptor, such as fread.

オペレーティングシステムハンドルは、呼び出された FileStream コンストラクターに応じて、同期的または非同期的に開かれている可能性があります。The operating system handle might have been opened synchronously or asynchronously, depending on which FileStream constructor was called. このハンドルが非同期に開かれたかどうかを検出するには、IsAsync プロパティを使用します。Use the IsAsync property to discover whether this handle was opened asynchronously. Win32 では、このハンドルはオーバーラップ IO 用に開かれており、ReadFileWriteFileには異なるパラメーターが必要です。In Win32, this means the handle was opened for overlapped IO, and it requires different parameters to ReadFile and WriteFile.


FileStream が作成され、ハンドルが渡されたときに、一部の操作でハンドルのファイルポインターが移動され、FileStream が再度使用されると、データの破損が発生する可能性があります。Data corruption might occur if a FileStream is created, its handle is passed, some operation moves the handle's file pointer, and then the FileStream is used again. 複数のスレッドが同じファイルに同時に書き込むことはできません。バッファリングコード FileStream は、そのハンドルを排他的に制御することを前提としています。Multiple threads cannot safely write to the same file simultaneously, and FileStream buffering code assumes that it exclusively controls the handle. 他のプロセスがファイルポインターを移動したことを FileStream が検出した場合、FileStreamIOException をスローすることがあります。FileStream might throw an IOException if FileStream detects that some other process has moved the file pointer. これを回避するには、バッファーに格納されている可能性が FileStream ファイルの一部にデータを書き込まず、FileStreamでメソッドが最後に呼び出されたときの場所にファイルポインターを復元します。To avoid this, do not write any data into a portion of the file that FileStream might have buffered, and restore the file pointer to the location it had when methods were last called on FileStream.


アンマネージコードにアクセスするための。for the ability to access unmanaged code. 関連付けられた列挙: UnmanagedCode セキュリティアクション: InheritanceDemandAssociated enumeration: UnmanagedCode Security action: InheritanceDemand.

直前の呼び出し元に完全信頼が必要です。requires full trust for the immediate caller. このメンバーは、部分的に信頼されているコードまたは透過的なコードでは使用できません。This member cannot be used by partially trusted or transparent code.