Поделиться через


_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>. Для формирования аргумента можно использовать побитовый оператор "или" () для| объединения двух или более констант манифеста flags .

Эти константы манифеста определены в <fcntl.h>:

Константа Description
_O_APPEND Помещает указатель файла в конец файла перед каждой операцией записи.
_O_RDONLY Открывает файл только для чтения.
_O_TEXT Открывает файл в режиме перевода текста ANSI.
_O_WTEXT Открывает файл в режиме Юникода (с преобразованием UTF-16).

Вызов _open_osfhandle передает права владения дескриптором файла Win32 дескриптору. Чтобы закрыть файл, открытый с помощью _open_osfhandleвызова, вызовите _close. Базовый дескриптор OS также закрывается вызовом _close. Не вызывайте функцию CloseHandle Win32 в исходном дескрипторе. Если дескриптор файла принадлежит FILE * потоку, вызов fclose закрытия дескриптора файла и базового дескриптора. В этом случае не вызывайте _close дескриптор файла или CloseHandle исходный дескриптор.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок
_open_osfhandle <io.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Обработка файлов
_get_osfhandle