Share via


_open_osfhandle

Associa um descritor de arquivo do rutime do C a um identificador de arquivo do sistema operacional existente.

Sintaxe

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

Parâmetros

osfhandle
Identificador de arquivo do sistema operacional.

flags
Tipos de operações permitidas.

Valor retornado

Se for bem-sucedido, _open_osfhandle retornará um descritor de arquivo de tempo de execução C. Caso contrário, ele retornará -1.

Comentários

A função _open_osfhandle aloca um descritor de arquivo do runtime do C. Ela associa esse descritor de arquivo ao identificador de arquivo do sistema operacional especificado por osfhandle. Para evitar um aviso do compilador, converta o argumento osfhandle de HANDLE para intptr_t. O argumento flags é uma expressão inteira formada por uma ou mais constantes de manifesto definidas no <fcntl.h>. Você pode usar o operador bit a bit "ou" (|) para combinar duas ou mais constantes de manifesto para formar o argumento flags.

As constantes de manifesto são definidas no <fcntl.h>:

Constante Descrição
_O_APPEND Posiciona um ponteiro de arquivo no final do arquivo, antes de cada operação de gravação.
_O_RDONLY Abre o arquivo para somente leitura.
_O_TEXT Abre o arquivo no modo de texto ANSI (traduzido).
_O_WTEXT Abre o arquivo no modo Unicode (convertido em UTF-16).

A chamada de _open_osfhandle transfere a propriedade do identificador de arquivo do Win32 para o descritor de arquivo. Para fechar um arquivo aberto com _open_osfhandle, chame _close. O identificador de arquivo do sistema operacional subjacente também é fechado por uma chamada para _close. Não chame a função CloseHandle do Win32 no identificador original. Se o descritor de arquivo pertencer a um fluxo FILE *, uma chamada para fclose fechará o descritor de arquivo e o identificador subjacente. Nesse caso, não chame _close no descritor de arquivo nem CloseHandle no identificador original.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
_open_osfhandle <io.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Manipulação de arquivos
_get_osfhandle