_open_osfhandle

Asocia un descriptor de archivo en tiempo de ejecución de C con un identificador de archivo del sistema operativo existente.

Sintaxis

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

Parámetros

osfhandle
Identificador de archivo del sistema operativo.

flags
Tipos de operaciones permitidas.

Valor devuelto

Si se realiza correctamente, _open_osfhandle devuelve un descriptor de archivo en tiempo de ejecución de C. De lo contrario, devuelve -1.

Comentarios

La función _open_osfhandle asigna un descriptor de archivo en tiempo de ejecución de C. Asocia este descriptor de archivo al identificador de archivo del sistema operativo especificado por osfhandle. Para evitar una advertencia del compilador, convierta el argumento osfhandle de HANDLE a intptr_t. El argumento flags es una expresión de entero formada por una o varias de las constantes del manifiesto, definidas en <fcntl.h>. Puede usar el operador "or" (|) bit a bit para combinar dos o más constantes de manifiesto a fin de formar el argumento flags.

Estas constantes de manifiesto se definen en <fcntl.h>:

Constante Descripción
_O_APPEND Coloca un puntero de archivo al final del archivo antes de cada operación de escritura.
_O_RDONLY Abre el archivo únicamente para leerlo.
_O_TEXT Abre el archivo en modo de texto (traducido).
_O_WTEXT Abre el archivo en modo Unicode (UTF-16 traducido).

Con la llamada _open_osfhandle se transfiere la propiedad del identificador de archivos de Win32 al descriptor del archivo. Para cerrar un archivo abierto mediante _open_osfhandle, llame a _close. El identificador de archivos del sistema operativo subyacente también se cierra mediante una llamada a _close. No llame a la función de Win32 CloseHandle en el identificador original. Si el descriptor del archivo pertenece a un flujo FILE *, al llamar a fclose se cerrará tanto el descriptor del archivo como el identificador subyacente. En este caso, no llame a _close en el descriptor del archivo ni a CloseHandle en el identificador original.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado necesario
_open_osfhandle <io.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Consulte también

Control de archivos
_get_osfhandle