_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.