_open_osfhandle
C ランタイム ファイル記述子を既存のオペレーティング システム ファイル ハンドルに関連付けます。
構文
int _open_osfhandle (
intptr_t osfhandle,
int flags
);
パラメーター
osfhandle
オペレーティング システム ファイル ハンドル。
flags
許可される操作の種類。
戻り値
正常に終了した場合、_open_osfhandle
は C ランタイム ファイル記述子を返します。 それ以外のときは -1 が返されます。
解説
_open_osfhandle
関数は、C ランタイム ファイル記述子を割り当てます。 このファイル記述子は、 osfhandle
で指定されたオペレーティング システム ファイル ハンドルに関連付けられます。 コンパイラの警告を回避するには、 osfhandle
引数を HANDLE
から intptr_t
にキャストします。 flags
引数は、<fcntl.h>
で定義された 1 つ以上のマニフェスト定数で構成された整数式です。 ビットごとの "OR" 演算子 (|
) を使用すると、2 つ以上のマニフェスト定数を組み合わせて flags
引数を形成できます。
次のマニフェスト定数は <fcntl.h>
で定義されます。
定数 | 説明 |
---|---|
_O_APPEND |
書き込み操作の前に、毎回、ファイル ポインターをファイルの末尾に位置指定します。 |
_O_RDONLY |
読み取り専用でファイルを開きます。 |
_O_TEXT |
ANSI テキスト (翻訳済み) モードでファイルを開きます。 |
_O_WTEXT |
Unicode (UTF-16 に変換) モードでファイルを開きます。 |
_open_osfhandle
呼び出しは、Win32 ファイル ハンドルの所有権をファイル記述子に転送します。 _open_osfhandle
を使用して開いたファイルを閉じるには、_close
を呼び出します。 基になる OS ファイル ハンドルも、 _close
の呼び出しによって閉じられます。 元のハンドルで Win32 関数 CloseHandle
を呼び出さないでください。 ファイル記述子が FILE *
ストリームによって所有されている場合、 fclose
の呼び出しによって、ファイル記述子と基になるハンドルの両方が閉じられます。 この場合は、ファイル記述子で _close
を呼び出したり、元のハンドルで CloseHandle
したりしないでください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_open_osfhandle |
<io.h> |
互換性の詳細については、「 Compatibility」を参照してください。