Share via


_open_osfhandle

將 C 執行時間檔案描述元與現有的作業系統檔句柄產生關聯。

語法

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

參數

osfhandle
操作系統檔句柄。

flags
允許的作業類型。

傳回值

如果成功,_open_osfhandle 會傳回 C 執行階段檔案描述項。 否則,它會傳回 -1。

備註

_open_osfhandle 式會配置 C 執行時間檔案描述元。 它會將此檔案描述項與 所指定的操作系統檔句柄產生 osfhandle關聯。 若要避免編譯程式警告,請將 osfhandle 自變數從 HANDLEintptr_t轉換成 。 自 flags 變數是從 中 <fcntl.h>定義的一或多個指令清單常數所形成的整數表達式。 您可以使用位 「or」 (|) 運算子來結合兩個或多個指令清單常數來形成 flags 自變數。

這些指令清單常數定義於 中 <fcntl.h>

持續性 描述
_O_APPEND 在每次寫入作業之前,將檔案指標置放到檔案的結尾。
_O_RDONLY 開啟檔案為僅供讀取。
_O_TEXT 以 ANSI 文字 (翻譯) 模式開啟檔案。
_O_WTEXT 以 Unicode (已轉譯 UTF-16) 模式開啟檔案。

呼叫會將 _open_osfhandle Win32 檔案句柄的擁有權轉移給檔案描述元。 若要關閉使用 _open_osfhandle開啟的檔案,請呼叫 _close。 呼叫 也會關閉 _close基礎OS檔案句柄。 請勿在原始句柄上呼叫 Win32 函式 CloseHandle 。 如果檔案描述元是由 FILE * 數據流所擁有,則呼叫 fclose 會關閉檔案描述元和基礎句柄。 在這裡情況下,請勿在檔案描述元或CloseHandle原始句柄上呼叫 _close

根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態

需求

常式 必要的標頭
_open_osfhandle <io.h>

如需相容性詳細資訊,請參閱相容性

另請參閱

檔案處理
_get_osfhandle