mirror of
https://github.com/reactos/reactos.git
synced 2025-05-16 15:50:24 +00:00

Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3 License: MIT
572 lines
16 KiB
C
572 lines
16 KiB
C
//
|
|
// corecrt_io.h
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// This file declares the low-level I/O and file handling functionality. These
|
|
// declarations are split out to support the Windows build.
|
|
//
|
|
#pragma once
|
|
|
|
#include <corecrt_share.h>
|
|
#include <corecrt_wio.h>
|
|
|
|
#pragma warning(push)
|
|
#pragma warning(disable: _UCRT_DISABLED_WARNINGS)
|
|
_UCRT_DISABLE_CLANG_WARNINGS
|
|
|
|
_CRT_BEGIN_C_HEADER
|
|
|
|
|
|
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
//
|
|
// Types
|
|
//
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
#ifdef _USE_32BIT_TIME_T
|
|
#define _finddata_t _finddata32_t
|
|
#define _finddatai64_t _finddata32i64_t
|
|
#else
|
|
#define _finddata_t _finddata64i32_t
|
|
#define _finddatai64_t __finddata64_t
|
|
#endif
|
|
|
|
struct _finddata32_t
|
|
{
|
|
unsigned attrib;
|
|
__time32_t time_create; // -1 for FAT file systems
|
|
__time32_t time_access; // -1 for FAT file systems
|
|
__time32_t time_write;
|
|
_fsize_t size;
|
|
char name[260];
|
|
};
|
|
|
|
struct _finddata32i64_t
|
|
{
|
|
unsigned attrib;
|
|
__time32_t time_create; // -1 for FAT file systems
|
|
__time32_t time_access; // -1 for FAT file systems
|
|
__time32_t time_write;
|
|
__int64 size;
|
|
char name[260];
|
|
};
|
|
|
|
struct _finddata64i32_t
|
|
{
|
|
unsigned attrib;
|
|
__time64_t time_create; // -1 for FAT file systems
|
|
__time64_t time_access; // -1 for FAT file systems
|
|
__time64_t time_write;
|
|
_fsize_t size;
|
|
char name[260];
|
|
};
|
|
|
|
struct __finddata64_t
|
|
{
|
|
unsigned attrib;
|
|
__time64_t time_create; // -1 for FAT file systems
|
|
__time64_t time_access; // -1 for FAT file systems
|
|
__time64_t time_write;
|
|
__int64 size;
|
|
char name[260];
|
|
};
|
|
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
//
|
|
// Macros
|
|
//
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
// File attribute constants for the _findfirst() family of functions
|
|
#define _A_NORMAL 0x00 // Normal file - No read/write restrictions
|
|
#define _A_RDONLY 0x01 // Read only file
|
|
#define _A_HIDDEN 0x02 // Hidden file
|
|
#define _A_SYSTEM 0x04 // System file
|
|
#define _A_SUBDIR 0x10 // Subdirectory
|
|
#define _A_ARCH 0x20 // Archive file
|
|
|
|
|
|
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
//
|
|
// Functions
|
|
//
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
#ifdef _USE_32BIT_TIME_T
|
|
#define _findfirst _findfirst32
|
|
#define _findnext _findnext32
|
|
#define _findfirsti64 _findfirst32i64
|
|
#define _findnexti64 _findnext32i64
|
|
#else
|
|
#define _findfirst _findfirst64i32
|
|
#define _findnext _findnext64i32
|
|
#define _findfirsti64 _findfirst64
|
|
#define _findnexti64 _findnext64
|
|
#endif
|
|
|
|
#if _CRT_FUNCTIONS_REQUIRED
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _access(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _access_s(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _chmod(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _chsize(
|
|
_In_ int _FileHandle,
|
|
_In_ long _Size
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _chsize_s(
|
|
_In_ int _FileHandle,
|
|
_In_ __int64 _Size
|
|
);
|
|
|
|
_Check_return_opt_
|
|
_ACRTIMP int __cdecl _close(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_opt_
|
|
_ACRTIMP int __cdecl _commit(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl _creat(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _PermissionMode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _dup(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _dup2(
|
|
_In_ int _FileHandleSrc,
|
|
_In_ int _FileHandleDst
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _eof(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP long __cdecl _filelength(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _findfirst32(
|
|
_In_z_ char const* _FileName,
|
|
_Out_ struct _finddata32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _findnext32(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _finddata32_t* _FindData
|
|
);
|
|
|
|
_Check_return_opt_
|
|
_ACRTIMP int __cdecl _findclose(
|
|
_In_ intptr_t _FindHandle
|
|
);
|
|
|
|
_ACRTIMP intptr_t __cdecl _get_osfhandle(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _isatty(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_ACRTIMP int __cdecl _locking(
|
|
_In_ int _FileHandle,
|
|
_In_ int _LockMode,
|
|
_In_ long _NumOfBytes
|
|
);
|
|
|
|
_Check_return_opt_
|
|
_ACRTIMP long __cdecl _lseek(
|
|
_In_ int _FileHandle,
|
|
_In_ long _Offset,
|
|
_In_ int _Origin
|
|
);
|
|
|
|
_Success_(return == 0)
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _mktemp_s(
|
|
_Inout_updates_z_(_Size) char* _TemplateName,
|
|
_In_ size_t _Size
|
|
);
|
|
|
|
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(
|
|
errno_t, _mktemp_s,
|
|
_Prepost_z_ char, _TemplateName
|
|
)
|
|
|
|
_Success_(return != 0)
|
|
_Check_return_ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(
|
|
char *, __RETURN_POLICY_DST, _ACRTIMP, _mktemp,
|
|
_Inout_z_, char, _TemplateName
|
|
)
|
|
|
|
_ACRTIMP int __cdecl _open_osfhandle(
|
|
_In_ intptr_t _OSFileHandle,
|
|
_In_ int _Flags
|
|
);
|
|
|
|
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_DCRTIMP int __cdecl _pipe(
|
|
_Out_writes_(2) int* _PtHandles,
|
|
_In_ unsigned int _PipeSize,
|
|
_In_ int _TextMode
|
|
);
|
|
#endif
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _read(
|
|
_In_ int _FileHandle,
|
|
_Out_writes_bytes_(_MaxCharCount) void* _DstBuf,
|
|
_In_ unsigned int _MaxCharCount
|
|
);
|
|
|
|
_ACRTIMP int __cdecl remove(
|
|
_In_z_ char const* _FileName
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl rename(
|
|
_In_z_ char const* _OldFilename,
|
|
_In_z_ char const* _NewFilename
|
|
);
|
|
|
|
_ACRTIMP int __cdecl _unlink(
|
|
_In_z_ char const* _FileName
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _setmode(
|
|
_In_ int _FileHandle,
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP long __cdecl _tell(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_CRT_INSECURE_DEPRECATE(_umask_s)
|
|
_ACRTIMP int __cdecl _umask(
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _umask_s(
|
|
_In_ int _NewMode,
|
|
_Out_ int* _OldMode
|
|
);
|
|
|
|
_ACRTIMP int __cdecl _write(
|
|
_In_ int _FileHandle,
|
|
_In_reads_bytes_(_MaxCharCount) void const* _Buf,
|
|
_In_ unsigned int _MaxCharCount
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP __int64 __cdecl _filelengthi64(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _findfirst32i64(
|
|
_In_z_ char const* _FileName,
|
|
_Out_ struct _finddata32i64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _findfirst64i32(
|
|
_In_z_ char const* _FileName,
|
|
_Out_ struct _finddata64i32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _findfirst64(
|
|
_In_z_ char const* _FileName,
|
|
_Out_ struct __finddata64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _findnext32i64(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _finddata32i64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _findnext64i32(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _finddata64i32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _findnext64(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct __finddata64_t* _FindData
|
|
);
|
|
|
|
_Check_return_opt_
|
|
_ACRTIMP __int64 __cdecl _lseeki64(
|
|
_In_ int _FileHandle,
|
|
_In_ __int64 _Offset,
|
|
_In_ int _Origin
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP __int64 __cdecl _telli64(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _sopen_s(
|
|
_Out_ int* _FileHandle,
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
_In_ int _PermissionMode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP errno_t __cdecl _sopen_s_nolock(
|
|
_Out_ int* _FileHandle,
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
_In_ int _PermissionMode
|
|
);
|
|
|
|
_ACRTIMP errno_t __cdecl _sopen_dispatch(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OFlag,
|
|
_In_ int _ShFlag,
|
|
_In_ int _PMode,
|
|
_Out_ int* _PFileHandle,
|
|
_In_ int _BSecure
|
|
);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
// These function do not validate pmode; use _sopen_s instead.
|
|
extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
inline int __CRTDECL _open(
|
|
_In_z_ char const* const _FileName,
|
|
_In_ int const _OFlag,
|
|
_In_ int const _PMode = 0
|
|
)
|
|
{
|
|
int _FileHandle;
|
|
// Last parameter passed as 0 because we don't want to validate pmode from _open
|
|
errno_t const _Result = _sopen_dispatch(_FileName, _OFlag, _SH_DENYNO, _PMode, &_FileHandle, 0);
|
|
return _Result ? -1 : _FileHandle;
|
|
}
|
|
|
|
extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
inline int __CRTDECL _sopen(
|
|
_In_z_ char const* const _FileName,
|
|
_In_ int const _OFlag,
|
|
_In_ int const _ShFlag,
|
|
_In_ int const _PMode = 0
|
|
)
|
|
{
|
|
int _FileHandle;
|
|
// Last parameter passed as 0 because we don't want to validate pmode from _sopen
|
|
errno_t const _Result = _sopen_dispatch(_FileName, _OFlag, _ShFlag, _PMode, &_FileHandle, 0);
|
|
return _Result ? -1 : _FileHandle;
|
|
}
|
|
|
|
#else
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl _open(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
...);
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl _sopen(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
...);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES
|
|
// Suppress warnings about double deprecation
|
|
#pragma warning(push)
|
|
#pragma warning(disable: 4141)
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_access)
|
|
_ACRTIMP int __cdecl access(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_chmod)
|
|
_ACRTIMP int __cdecl chmod(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_chsize)
|
|
_ACRTIMP int __cdecl chsize(
|
|
_In_ int _FileHandle,
|
|
_In_ long _Size
|
|
);
|
|
|
|
_Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_close)
|
|
_ACRTIMP int __cdecl close(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_creat) _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl creat(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _PermissionMode
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_dup)
|
|
_ACRTIMP int __cdecl dup(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_dup2)
|
|
_ACRTIMP int __cdecl dup2(
|
|
_In_ int _FileHandleSrc,
|
|
_In_ int _FileHandleDst
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_eof)
|
|
_ACRTIMP int __cdecl eof(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_filelength)
|
|
_ACRTIMP long __cdecl filelength(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_isatty)
|
|
_ACRTIMP int __cdecl isatty(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_locking)
|
|
_ACRTIMP int __cdecl locking(
|
|
_In_ int _FileHandle,
|
|
_In_ int _LockMode,
|
|
_In_ long _NumOfBytes
|
|
);
|
|
|
|
_Check_return_opt_ _CRT_NONSTDC_DEPRECATE(_lseek)
|
|
_ACRTIMP long __cdecl lseek(
|
|
_In_ int _FileHandle,
|
|
_In_ long _Offset,
|
|
_In_ int _Origin
|
|
);
|
|
|
|
_Success_(return != 0)
|
|
_CRT_NONSTDC_DEPRECATE(_mktemp) _CRT_INSECURE_DEPRECATE(_mktemp_s)
|
|
_ACRTIMP char * __cdecl mktemp(
|
|
_Inout_z_ char* _TemplateName
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_open) _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl open(
|
|
_In_z_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
...);
|
|
|
|
_Success_(return != -1)
|
|
_CRT_NONSTDC_DEPRECATE(_read)
|
|
_ACRTIMP int __cdecl read(
|
|
_In_ int _FileHandle,
|
|
_Out_writes_bytes_(_MaxCharCount) void* _DstBuf,
|
|
_In_ unsigned int _MaxCharCount
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_setmode)
|
|
_ACRTIMP int __cdecl setmode(
|
|
_In_ int _FileHandle,
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_CRT_NONSTDC_DEPRECATE(_sopen) _CRT_INSECURE_DEPRECATE(_sopen_s)
|
|
_ACRTIMP int __cdecl sopen(
|
|
_In_ char const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
...);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_tell)
|
|
_ACRTIMP long __cdecl tell(
|
|
_In_ int _FileHandle
|
|
);
|
|
|
|
_CRT_NONSTDC_DEPRECATE(_umask) _CRT_INSECURE_DEPRECATE(_umask_s)
|
|
_ACRTIMP int __cdecl umask(
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_CRT_NONSTDC_DEPRECATE(_unlink)
|
|
_ACRTIMP int __cdecl unlink(
|
|
_In_z_ char const* _FileName
|
|
);
|
|
|
|
_Check_return_ _CRT_NONSTDC_DEPRECATE(_write)
|
|
_ACRTIMP int __cdecl write(
|
|
_In_ int _FileHandle,
|
|
_In_reads_bytes_(_MaxCharCount) void const* _Buf,
|
|
_In_ unsigned int _MaxCharCount
|
|
);
|
|
|
|
#pragma warning(pop)
|
|
#endif // _CRT_INTERNAL_NONSTDC_NAMES
|
|
#endif // _CRT_FUNCTIONS_REQUIRED
|
|
|
|
_CRT_END_C_HEADER
|
|
_UCRT_RESTORE_CLANG_WARNINGS
|
|
#pragma warning(pop) // _UCRT_DISABLED_WARNINGS
|