Freigeben über


_open_osfhandle

Ordnet einen C-Laufzeitdateideskriptor einem vorhandenen Dateihandle des Betriebssystems zu.

Syntax

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

Parameter

osfhandle
Betriebssystemdateihandle.

flags
Zulässige Vorgangsarten.

Rückgabewert

Im Erfolgsfall gibt _open_osfhandle einen C-Laufzeit-Dateideskriptor zurück. Andernfalls wird –1 zurückgegeben.

Hinweise

Die _open_osfhandle Funktion weist einen C-Laufzeitdateideskriptor zu. Sie ordnet diesen Dateideskriptor dem betriebssystemspezifischen Dateihandle osfhandlezu. Um eine Compilerwarnung zu vermeiden, wandeln Sie das osfhandle Argument in HANDLE intptr_t. Das flags Argument ist ein ganzzahliger Ausdruck, der aus einer oder mehreren der manifestkonstanten gebildet wird, die in <fcntl.h>. Sie können den bitweisen Operator "or" (|) verwenden, um zwei oder mehr Manifestkonstanten zu kombinieren, um das flags Argument zu bilden.

Diese Manifestkonstanten werden in <fcntl.h>:

Konstante Beschreibung
_O_APPEND Positioniert einen Dateizeiger vor jedem Schreibvorgang am Ende der Datei.
_O_RDONLY Öffnet eine Datei nur zum Lesen.
_O_TEXT Öffnet die Datei im ANSI-Textmodus (übersetzt).
_O_WTEXT Öffnet eine Datei in Unicode (übersetzt UTF-16).

Der _open_osfhandle Aufruf überträgt den Besitz des Win32-Dateihandle an den Dateideskriptor. Rufen Sie _closeauf, um eine datei zu schließen, die mithilfe von _open_osfhandle" geöffnet wird. Das zugrunde liegende Betriebssystemdateihandle wird auch durch einen Aufruf von _close. Rufen Sie die Win32-Funktion CloseHandle nicht auf dem ursprünglichen Handle auf. Wenn der Dateideskriptor im Besitz eines FILE * Datenstroms ist, wird sowohl fclose der Dateideskriptor als auch das zugrunde liegende Handle geschlossen. Rufen _close Sie in diesem Fall weder den Dateideskriptor noch CloseHandle das ursprüngliche Handle auf.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header
_open_osfhandle <io.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Siehe auch

Dateibehandlung
_get_osfhandle