Udostępnij za pośrednictwem


_open_osfhandle

Kojarzy deskryptor pliku w języku C z istniejącym uchwytem plików systemu operacyjnego.

Składnia

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

Parametry

osfhandle
Dojście do plików systemu operacyjnego.

flags
Dozwolone typy operacji.

Wartość zwracana

Jeśli operacja powiedzie się, _open_osfhandle zwraca deskryptor pliku czasu wykonywania języka C. W przeciwnym razie zwraca wartość -1.

Uwagi

Funkcja _open_osfhandle przydziela deskryptor pliku czasu wykonywania języka C. Kojarzy ten deskryptor plików z uchwytem plików systemu operacyjnego określonym przez osfhandle. Aby uniknąć ostrzeżenia kompilatora, rzutuj osfhandle argument z HANDLE na intptr_t. Argument flags to wyrażenie całkowite utworzone na podstawie co najmniej jednej stałej manifestu zdefiniowanej w elememencie <fcntl.h>. Możesz użyć operatora bitowego "lub" (|), aby połączyć co najmniej dwie stałe manifestu w celu utworzenia argumentu flags .

Te stałe manifestu są definiowane w pliku <fcntl.h>:

Stała opis
_O_APPEND Umieszcza wskaźnik pliku na końcu pliku przed każdą operacją zapisu.
_O_RDONLY Otwiera plik tylko do odczytu.
_O_TEXT Otwiera plik w trybie tekstowym ANSI (przetłumaczonym).
_O_WTEXT Otwiera plik w trybie Unicode (przetłumaczony utF-16).

Wywołanie _open_osfhandle przenosi własność uchwytu pliku Win32 do deskryptora plików. Aby zamknąć plik otwarty przy użyciu metody _open_osfhandle, wywołaj metodę _close. Dojście do pliku systemu operacyjnego jest również zamykane przez wywołanie metody _close. Nie wywołujej funkcji CloseHandle Win32 na oryginalnym uchwytie. Jeśli deskryptor plików jest własnością strumienia FILE * , wywołanie w celu fclose zamknięcia deskryptora plików i bazowego uchwytu. W takim przypadku nie należy wywoływać _close deskryptora plików ani CloseHandle oryginalnego uchwytu.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
_open_osfhandle <io.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Zobacz też

Obsługa plików
_get_osfhandle