Как получить handle файла

Обновлено: 03.07.2024

Получает дескриптор файла операционной системы, связанный с указанным дескриптором файла.

Синтаксис

Параметры

демо
Дескриптор существующего файла.

Возвращаемое значение

Возвращает описатель файла операционной системы, если демон демона является допустимым. В противном случае вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, возвращается INVALID_HANDLE_VALUE (-1). Он также устанавливает значение по значение EBADF, указывающее на недопустимый маркер файла. Чтобы избежать предупреждения, когда результат используется как файловый обработчик Win32, приведите его к типу Handle .

если stdin, stdout и stderr не связаны с потоком (например, в Windows приложении без окна консоли), значения дескрипторов файлов для этих потоков возвращаются из _fileno как специальное значение-2. Аналогично, если в качестве параметра дескриптора файла используется 0, 1 или 2, а не результат вызова _fileno, _get_osfhandle также возвращает особое значение-2, если дескриптор файла не связан с потоком, и не устанавливает значение переводится. Однако это недопустимое значение для этого файла, и последующие вызовы, которые пытаются его использовать, скорее всего, завершатся ошибкой.

Дополнительные сведения о значение EBADF и других кодах ошибок см. в разделе _doserrno, код ошибки, _sys_errlist и _sys_nerr.

Remarks

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

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

Читайте также: