_open_osfhandle_open_osfhandle

C ランタイムファイル記述子を既存のオペレーティングシステムのファイルハンドルに関連付けます。Associates a C run-time file descriptor with an existing operating system file handle.

構文Syntax

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

パラメーターParameters

osfhandleosfhandle
オペレーティングシステムのファイルハンドル。Operating system file handle.

flagsflags
許可される操作の種類。Types of operations allowed.

戻り値Return Value

正常に終了した場合、_open_osfhandle は C ランタイム ファイル記述子を返します。If successful, _open_osfhandle returns a C run-time file descriptor. それ以外のときは -1 が返されます。Otherwise, it returns -1.

解説Remarks

_Open_osfhandle 関数は、C ランタイムのファイル記述子を割り当てます。The _open_osfhandle function allocates a C run-time file descriptor. このファイル記述子を、 osfhandle によって指定されたオペレーティングシステムのファイルハンドルに関連付けます。It associates this file descriptor with the operating system file handle specified by osfhandle. コンパイラの警告を避けるには、osfhandle 引数を HANDLE から intptr_t にキャストします。To avoid a compiler warning, cast the osfhandle argument from HANDLE to intptr_t. Flags 引数は、で定義された1つ以上のマニフェスト定数から成る整数式です <fcntl.h> 。The flags argument is an integer expression formed from one or more of the manifest constants defined in <fcntl.h>. ビットごとの OR 演算子 ( | ) を使用すると、2つ以上のマニフェスト定数を結合して flags 引数を形成できます。You can use the bitwise-OR operator ( | ) to combine two or more manifest constants to form the flags argument.

これらのマニフェスト定数は、以下で定義されてい <fcntl.h> ます。These manifest constants are defined in <fcntl.h>:

定数Constant 説明Description
_O _ APPEND_O_APPEND 書き込み操作の前に、毎回、ファイル ポインターをファイルの末尾に位置指定します。Positions a file pointer to the end of the file before every write operation.
_O _ RDONLY_O_RDONLY 読み取り専用でファイルを開きます。Opens the file for reading only.
_O _ テキスト_O_TEXT ファイルをテキスト (変換) モードで開きます。Opens the file in text (translated) mode.
_O _ WTEXT_O_WTEXT Unicode (UTF-16 に変換) モードでファイルを開きます。Opens the file in Unicode (translated UTF-16) mode.

_open_osfhandle 呼び出しは、ファイル記述子に、Win32 ファイル ハンドルの所有権を転送します。The _open_osfhandle call transfers ownership of the Win32 file handle to the file descriptor. _open_osfhandle を使用して開いたファイルを閉じるには、_close を呼び出します。To close a file opened by using _open_osfhandle, call _close. 基になる OS ファイル ハンドルも _close を呼び出すことで閉じます。The underlying OS file handle is also closed by a call to _close. 元のハンドルで Win32 関数 CloseHandle を呼び出さないでください。Don't call the Win32 function CloseHandle on the original handle. ファイル記述子がファイル * ストリームによって所有されている場合、 fclose を呼び出すと、ファイル記述子と基になるハンドルの両方が閉じられます。If the file descriptor is owned by a FILE * stream, then a call to fclose closes both the file descriptor and the underlying handle. この場合、_close をファイル記述子で呼び出したり、元のハンドルで CloseHandle を呼び出したりしないでください。In this case, don't call _close on the file descriptor or CloseHandle on the original handle.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_open_osfhandle_open_osfhandle <io.h>

互換性について詳しくは、「 Compatibility」をご覧ください。For more compatibility information, see Compatibility.

関連項目See also

ファイルの処理File Handling
_get_osfhandle_get_osfhandle