mirror of
https://github.com/reactos/reactos.git
synced 2025-03-01 03:45:16 +00:00

Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3 License: MIT
270 lines
7 KiB
C
270 lines
7 KiB
C
//
|
|
// corecrt_wio.h
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// This file declares the wide character (wchar_t) I/O functionality, shared by
|
|
// <io.h> and <wchar.h>.
|
|
//
|
|
#pragma once
|
|
|
|
#include <corecrt.h>
|
|
#include <corecrt_share.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 _wfinddata_t _wfinddata32_t
|
|
#define _wfinddatai64_t _wfinddata32i64_t
|
|
#else
|
|
#define _wfinddata_t _wfinddata64i32_t
|
|
#define _wfinddatai64_t _wfinddata64_t
|
|
#endif
|
|
|
|
typedef unsigned long _fsize_t;
|
|
|
|
struct _wfinddata32_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;
|
|
wchar_t name[260];
|
|
};
|
|
|
|
struct _wfinddata32i64_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;
|
|
wchar_t name[260];
|
|
};
|
|
|
|
struct _wfinddata64i32_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;
|
|
wchar_t name[260];
|
|
};
|
|
|
|
struct _wfinddata64_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;
|
|
wchar_t name[260];
|
|
};
|
|
|
|
|
|
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
//
|
|
// Functions
|
|
//
|
|
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
#ifdef _USE_32BIT_TIME_T
|
|
#define _wfindfirst _wfindfirst32
|
|
#define _wfindnext _wfindnext32
|
|
#define _wfindfirsti64 _wfindfirst32i64
|
|
#define _wfindnexti64 _wfindnext32i64
|
|
#else
|
|
#define _wfindfirst _wfindfirst64i32
|
|
#define _wfindnext _wfindnext64i32
|
|
#define _wfindfirsti64 _wfindfirst64
|
|
#define _wfindnexti64 _wfindnext64
|
|
#endif
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _waccess(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _waccess_s(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _AccessMode
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wchmod(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _Mode
|
|
);
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s)
|
|
_ACRTIMP int __cdecl _wcreat(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _PermissionMode
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _wfindfirst32(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_Out_ struct _wfinddata32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wfindnext32(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _wfinddata32_t* _FindData
|
|
);
|
|
|
|
_ACRTIMP int __cdecl _wunlink(
|
|
_In_z_ wchar_t const* _FileName
|
|
);
|
|
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wrename(
|
|
_In_z_ wchar_t const* _OldFileName,
|
|
_In_z_ wchar_t const* _NewFileName
|
|
);
|
|
|
|
_ACRTIMP errno_t __cdecl _wmktemp_s(
|
|
_Inout_updates_z_(_SizeInWords) wchar_t* _TemplateName,
|
|
_In_ size_t _SizeInWords
|
|
);
|
|
|
|
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(
|
|
errno_t, _wmktemp_s,
|
|
wchar_t, _TemplateName
|
|
)
|
|
|
|
_Success_(return != 0)
|
|
__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(
|
|
wchar_t*, __RETURN_POLICY_DST, _ACRTIMP, _wmktemp,
|
|
_Inout_z_, wchar_t, _TemplateName
|
|
)
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _wfindfirst32i64(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_Out_ struct _wfinddata32i64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _wfindfirst64i32(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_Out_ struct _wfinddata64i32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP intptr_t __cdecl _wfindfirst64(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_Out_ struct _wfinddata64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wfindnext32i64(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _wfinddata32i64_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wfindnext64i32(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _wfinddata64i32_t* _FindData
|
|
);
|
|
|
|
_Success_(return != -1)
|
|
_Check_return_
|
|
_ACRTIMP int __cdecl _wfindnext64(
|
|
_In_ intptr_t _FindHandle,
|
|
_Out_ struct _wfinddata64_t* _FindData
|
|
);
|
|
|
|
_Check_return_wat_
|
|
_ACRTIMP errno_t __cdecl _wsopen_s(
|
|
_Out_ int* _FileHandle,
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
_In_ int _PermissionFlag
|
|
);
|
|
|
|
_ACRTIMP errno_t __cdecl _wsopen_dispatch(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OFlag,
|
|
_In_ int _ShFlag,
|
|
_In_ int _PMode,
|
|
_Out_ int* _PFileHandle,
|
|
_In_ int _BSecure
|
|
);
|
|
|
|
|
|
|
|
#if defined __cplusplus
|
|
|
|
// These functions do not validate pmode; use _wsopen_s instead.
|
|
extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s)
|
|
inline int __CRTDECL _wopen(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OFlag,
|
|
_In_ int _PMode = 0
|
|
)
|
|
{
|
|
int _FileHandle;
|
|
// Last parameter passed as 0 because we don't want to validate pmode from _open
|
|
errno_t const _Result = _wsopen_dispatch(_FileName, _OFlag, _SH_DENYNO, _PMode, &_FileHandle, 0);
|
|
return _Result ? -1 : _FileHandle;
|
|
}
|
|
|
|
extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s)
|
|
inline int __CRTDECL _wsopen(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OFlag,
|
|
_In_ int _ShFlag,
|
|
_In_ int _PMode = 0
|
|
)
|
|
{
|
|
int _FileHandle;
|
|
// Last parameter passed as 0 because we don't want to validate pmode from _sopen
|
|
errno_t const _Result = _wsopen_dispatch(_FileName, _OFlag, _ShFlag, _PMode, &_FileHandle, 0);
|
|
return _Result ? -1 : _FileHandle;
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s)
|
|
_ACRTIMP int __cdecl _wopen(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
...);
|
|
|
|
_Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s)
|
|
_ACRTIMP int __cdecl _wsopen(
|
|
_In_z_ wchar_t const* _FileName,
|
|
_In_ int _OpenFlag,
|
|
_In_ int _ShareFlag,
|
|
...);
|
|
|
|
#endif
|
|
|
|
_CRT_END_C_HEADER
|
|
_UCRT_RESTORE_CLANG_WARNINGS
|
|
#pragma warning(pop) // _UCRT_DISABLED_WARNINGS
|