Partager via


_open_osfhandle

Associe un descripteur de fichier runtime C à un handle de fichier de système d’exploitation existant.

Syntaxe

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

Paramètres

osfhandle
Handle de fichier du système d’exploitation.

flags
Types d’opération autorisés.

Valeur retournée

En cas de réussite, _open_osfhandle retourne un descripteur de fichier Runtime C. Sinon, retourne -1.

Notes

La _open_osfhandle fonction alloue un descripteur de fichier runtime C. Il associe ce descripteur de fichier au handle de fichier du système d’exploitation spécifié par osfhandle. Pour éviter un avertissement du compilateur, convertissez l’argument osfhandle HANDLE en intptr_t. L’argument flags est une expression entière formée à partir d’une ou plusieurs constantes de manifeste définies dans <fcntl.h>. Vous pouvez utiliser l’opérateur « ou » au| niveau du bit pour combiner deux constantes manifestes ou plus pour former l’argument flags .

Ces constantes de manifeste sont définies dans <fcntl.h>:

Constant Description
_O_APPEND Positionne un pointeur de fichier à la fin du fichier avant chaque opération d’écriture.
_O_RDONLY Ouvre le fichier pour un accès en lecture uniquement.
_O_TEXT Ouvre le fichier en mode texte ANSI (traduit).
_O_WTEXT Ouvre le fichier en mode Unicode (UTF-16 traduit).

L’appel _open_osfhandle transfère la propriété du handle de fichier Win32 au descripteur de fichier. Pour fermer un fichier ouvert à l’aide _open_osfhandlede , appelez _close. Le handle de fichier de système d’exploitation sous-jacent est également fermé par un appel à _close. N’appelez pas la fonction CloseHandle Win32 sur le handle d’origine. Si le descripteur de fichier appartient à un FILE * flux, un appel pour fclose fermer le descripteur de fichier et le handle sous-jacent. Dans ce cas, n’appelez _close pas le descripteur de fichier ou CloseHandle sur le handle d’origine.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
_open_osfhandle <io.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Voir aussi

Gestion des fichiers
_get_osfhandle