LearnWithTouch/App/LearnWithTouch_ios/Libraries/libil2cpp/include/os/WinRT/Win32ApiWinRTEmulation.h
2019-07-01 14:33:21 +02:00

90 lines
3.0 KiB
C

#pragma once
#if IL2CPP_TARGET_WINRT
extern "C"
{
#if WINDOWS_SDK_BUILD_VERSION < 16299 // These APIs got readded on Windows 10 Fall Creators Update
#define CreateEvent CreateEventW
#define FreeEnvironmentStrings FreeEnvironmentStringsW
#define GetEnvironmentStrings GetEnvironmentStringsW
#define GetEnvironmentVariable GetEnvironmentVariableW
#define GetVersionEx GetVersionExW
#define SetEnvironmentVariable SetEnvironmentVariableW
#endif
#define GetUserName GetUserNameW
#if WINDOWS_SDK_BUILD_VERSION < 16299
inline HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCWSTR lpName)
{
DWORD flags = 0;
if (bManualReset)
flags |= CREATE_EVENT_MANUAL_RESET;
if (bInitialState)
flags |= CREATE_EVENT_INITIAL_SET;
return CreateEventExW(lpEventAttributes, lpName, flags, EVENT_ALL_ACCESS);
}
#endif
inline HANDLE WINAPI CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{
const DWORD kFileAttributeMask = 0x0000FFFF;
const DWORD kFileFlagMask = 0xFFFF0000;
CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
extendedParameters.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
extendedParameters.dwFileAttributes = dwFlagsAndAttributes & kFileAttributeMask;
extendedParameters.dwFileFlags = dwFlagsAndAttributes & kFileFlagMask;
extendedParameters.dwSecurityQosFlags = SECURITY_ANONYMOUS;
extendedParameters.lpSecurityAttributes = lpSecurityAttributes;
extendedParameters.hTemplateFile = hTemplateFile;
return CreateFile2(lpFileName, dwDesiredAccess, dwShareMode, dwCreationDisposition, &extendedParameters);
}
#if WINDOWS_SDK_BUILD_VERSION < 16299
BOOL WINAPI FreeEnvironmentStringsW(LPWCH strings);
LPWCH WINAPI GetEnvironmentStringsW();
DWORD WINAPI GetEnvironmentVariableW(LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW lpVersionInformation);
#endif
BOOL WINAPI GetUserNameW(LPWSTR lpBuffer, LPDWORD pcbBuffer);
inline HMODULE WINAPI LoadLibraryW(LPCWSTR lpLibFileName)
{
return LoadPackagedLibrary(lpLibFileName, 0);
}
#if WINDOWS_SDK_BUILD_VERSION < 16299
BOOL WINAPI SetEnvironmentVariableW(LPCWSTR lpName, LPCWSTR lpValue);
#endif
#define CreateFileMappingW(hFile, lpFileMappingAttributes, flProtect, dwMaximumSizeHigh, dwMaximumSizeLow, lpName) \
CreateFileMappingFromApp(hFile, lpFileMappingAttributes, flProtect, (static_cast<ULONG64>(dwMaximumSizeHigh) << 32) | dwMaximumSizeLow, lpName);
#define MapViewOfFile(hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap) \
MapViewOfFileFromApp(hFileMappingObject, dwDesiredAccess, (static_cast<ULONG64>(dwFileOffsetHigh) << 32) | dwFileOffsetLow, dwNumberOfBytesToMap);
#if WINDOWS_SDK_BUILD_VERSION < 14393
#define TlsAlloc() FlsAlloc(NULL)
#define TlsGetValue FlsGetValue
#define TlsSetValue FlsSetValue
#define TlsFree FlsFree
#endif
} // extern "C"
#endif