1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00
Beef/BeefySysLib/platform/notwin/NotWin.h
2019-08-23 11:56:54 -07:00

305 lines
12 KiB
C

void OutputDebugStringA(const char* str);
void OutputDebugStringW(const wchar_t* str);
void* BFTlsGetValue(BFTlsKey tlsKey);
bool BFTlsSetValue(BFTlsKey tlsKey, void* tlsValue);
BFTlsKey BFTlsAlloc();
bool BFTlsFree(BFTlsKey tlsKey);
enum GET_FILEEX_INFO_LEVELS
{
GetFileExInfoStandard,
GetFileExMaxInfoLevel
};
typedef bool BOOL;
#define MAX_PATH 4096
#define BF_UNUSED __unused
#define BF_ENDIAN_LITTLE
#define INFINITE -1
#define CF_TEXT 0
#define ERROR_SUCCESS 0
#define ERROR_FILE_NOT_FOUND 2L
#define ERROR_NO_MORE_FILES 18L
#define ERROR_SHARING_VIOLATION 32L
#define ERROR_INVALID_NAME 123L
#define ERROR_ALREADY_EXISTS 183L
#define INVALID_HANDLE_VALUE ((HANDLE)(intptr)-1)
#define INVALID_FILE_ATTRIBUTES (uint32)-1
#define INVALID_SET_FILE_POINTER -1
#define INVALID_FILE_SIZE -1
#define NOERROR 0
#define E_NOINTERFACE (HRESULT)0x80004002L
#define E_FAIL (HRESULT)0x80004005L
#define FILE_BEGIN 0
#define FILE_CURRENT 1
#define FILE_END 2
#define GENERIC_READ (0x80000000L)
#define GENERIC_WRITE (0x40000000L)
#define GENERIC_EXECUTE (0x20000000L)
#define GENERIC_ALL (0x10000000L)
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
#define STD_INPUT_HANDLE -10
#define STD_OUTPUT_HANDLE -11
#define STD_ERROR_HANDLE -12
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
#define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x00008000
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
#define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x00020000
#define FILE_FLAG_WRITE_THROUGH 0x80000000
#define FILE_FLAG_OVERLAPPED 0x40000000
#define FILE_FLAG_NO_BUFFERING 0x20000000
#define FILE_FLAG_RANDOM_ACCESS 0x10000000
#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000
#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000
#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000
#define FILE_FLAG_POSIX_SEMANTICS 0x01000000
#define FILE_FLAG_SESSION_AWARE 0x00800000
#define FILE_FLAG_OPEN_REPARSE_POINT 0x00200000
#define FILE_FLAG_OPEN_NO_RECALL 0x00100000
#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000
#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002
#define FILE_TYPE_UNKNOWN 0x0000
#define FILE_TYPE_DISK 0x0001
#define FILE_TYPE_CHAR 0x0002
#define FILE_TYPE_PIPE 0x0003
#define FILE_TYPE_REMOTE 0x8000
#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
#define FORMAT_MESSAGE_FROM_STRING 0x00000400
#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
#define stricmp strcasecmp
#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_INVALID -1
struct SYSTEMTIME
{
uint16 wYear;
uint16 wMonth;
uint16 wDayOfWeek;
uint16 wDay;
uint16 wHour;
uint16 wMinute;
uint16 wSecond;
uint16 wMilliseconds;
};
struct TIME_ZONE_INFORMATION
{
int32 Bias;
wchar_t StandardName[32];
SYSTEMTIME StandardDate;
int32 StandardBias;
wchar_t DaylightName[32];
SYSTEMTIME DaylightDate;
int32 DaylightBias;
};
extern int gBFPlatformLastError;
typedef intptr (BFSTDCALL *BFLibProcAddr)();
struct FILETIME
{
uint32 dwLowDateTime;
uint32 dwHighDateTime;
};
struct WIN32_FIND_DATAW
{
uint32 dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
uint32 nFileSizeHigh;
uint32 nFileSizeLow;
uint32 dwReserved0;
uint32 dwReserved1;
wchar_t cFileName[MAX_PATH];
wchar_t cAlternateFileName[14];
};
struct WIN32_FILE_ATTRIBUTE_DATA
{
uint32 dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
uint32 nFileSizeHigh;
uint32 nFileSizeLow;
};
struct SECURITY_ATTRIBUTES
{
uint32 nLength;
void* lpSecurityDescriptor;
bool bInheritHandle;
};
#define WAIT_OBJECT_0 0
#define WAIT_TIMEOUT 0x102
struct OVERLAPPED
{
};
struct MODULEINFO
{
void* lpBaseOfDll;
DWORD SizeOfImage;
void* EntryPoint;
};
struct ULARGE_INTEGER
{
uint64 QuadPart;
};
struct LARGE_INTEGER
{
int64 QuadPart;
};
#define DIR_SEP_CHAR '/'
#define DIR_SEP_CHAR_ALT '\\'
#define PROCESS_ALL_ACCESS 0xFFFF
#define THREAD_ALL_ACCESS 0xFFFF
#define THREAD_PRIORITY_BELOW_NORMAL -1
#define THREAD_PRIORITY_NORMAL 0
#define THREAD_PRIORITY_ABOVE_NORMAL 1
HANDLE GetModuleHandle(HANDLE h);
uint32 GetModuleFileNameW(uint32 hModule, wchar_t* lpFilename, uint32 length);
uint32 GetModuleFileNameA(uint32 hModule, char* lpFilename, uint32 length);
HMODULE LoadLibraryA(const char* fileName);
void FreeLibrary(HMODULE lib);
bool CreateDirectoryW(const wchar_t* str, void* securityAttributes);
bool RemoveDirectoryW(const wchar_t* str);
int GetLastError();
BFLibProcAddr GetProcAddress(HMODULE mod, const char* name);
int* GetStdHandle(int32 handleId);
BF_THREADID GetCurrentThreadId();
HANDLE GetCurrentThread();
bool SetThreadPriority(HANDLE hThread, int nPriority);
int GetThreadPriority(HANDLE hThread);
HANDLE OpenThread(int desiredAccess, bool inheritHandle, BF_THREADID threadId);
typedef uint32 (BFSTDCALL *LPTHREAD_START_ROUTINE)(void* param);
void* CreateThread(void* threadAttributes, int32 stackSize, LPTHREAD_START_ROUTINE threadStartProc, void* param, uint32 flags, BF_THREADID* threadId);
uint32 ResumeThread(HANDLE thread);
uint32 SuspendThread(HANDLE thread);
void Sleep(int32 ms);
HANDLE FindFirstFileW(const wchar_t* lpFileName, WIN32_FIND_DATAW* lpFindFileData);
bool FindNextFileW(HANDLE hFindFile, WIN32_FIND_DATAW* lpFindFileData);
bool FindClose(HANDLE hFindFile);
uint32 GetCurrentDirectoryW(uint32 nBufferLength, const wchar_t* lpBuffer);
bool SetCurrentDirectoryW(wchar_t* lpBuffer);
bool CopyFileW(const wchar_t* lpExistingFileName, const wchar_t* lpNewFileName, bool allowOverwrite);
bool MoveFileW(const wchar_t* lpExistingFileName, const wchar_t* lpNewFileName);
bool DeleteFileW(const wchar_t* lpFileName);
bool ReplaceFileW(const wchar_t* lpReplacedFileName, const wchar_t* lpReplacementFileName, const wchar_t* lpBackupFileName, uint32 dwReplaceFlags, void* lpExclude, void* lpReserved);
bool SetFileAttributesW(const wchar_t* lpFileName, uint32 dwFileAttributes);
int32 GetFileType(HANDLE fileHandle);
bool GetFileAttributesExW(const wchar_t* lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, void* lpFileInformation);
HANDLE CreateFileW(const wchar_t* lpFileName, uint32 dwDesiredAccess, uint32 dwShareMode, SECURITY_ATTRIBUTES* lpSecurityAttributes, uint32 dwCreationDisposition, uint32 dwFlagsAndAttributes, HANDLE hTemplateFile);
bool CreatePipe(HANDLE* hReadPipe, HANDLE* hWritePipe, SECURITY_ATTRIBUTES* lpPipeAttributes, uint32 nSize);
bool WriteFile(HANDLE hFile, void* lpBuffer, uint32 nNumberOfBytesToWrite, uint32* lpNumberOfBytesWritten, OVERLAPPED* lpOverlapped);
bool ReadFile(HANDLE hFile, void* lpBuffer, uint32 nNumberOfBytesToRead, uint32* lpNumberOfBytesRead, OVERLAPPED* lpOverlapped);
bool CloseHandle_File(HANDLE handle);
bool SetEvent(HANDLE handle);
bool ResetEvent(HANDLE handle);
int WaitForSingleObject(HANDLE obj, int waitMs);
int WaitForSingleObject_Thread(HANDLE obj, int waitMs);
bool CloseHandle_Event(HANDLE handle);
bool FlushFileBuffers(HANDLE handle);
int32 SetFilePointer(HANDLE handle, int32 distanceToMove, int32* distanceToMoveHigh, uint32 moveMethod);
int32 GetFileSize(HANDLE hFile, uint32* fileSizeHigh);
bool GetFileSizeEx(HANDLE hFile, LARGE_INTEGER* lpFileSize);
bool SetEndOfFile(HANDLE hFile);
bool SetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, LARGE_INTEGER* lpNewFilePointer, DWORD dwMoveMethod);
bool SetFileTime(HANDLE hFile, const FILETIME* lpCreationTime, const FILETIME* lpLastAccessTime, const FILETIME* lpLastWriteTime);
bool LockFile(HANDLE hFile, uint32 dwFileOffsetLow, uint32 dwFileOffsetHigh, uint32 nNumberOfBytesToLockLow, uint32 nNumberOfBytesToLockHigh);
bool UnlockFile(HANDLE hFile, uint32 dwFileOffsetLow, uint32 dwFileOffsetHigh, uint32 nNumberOfBytesToUnlockLow, uint32 nNumberOfBytesToUnlockHigh);
bool DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, HANDLE* lpTargetHandle, uint32 dwDesiredAccess, bool bInheritHandle, uint32 dwOptions);
int32 GetTempPath(int32 bufferLen, wchar_t* str);
HANDLE CreateEventW(SECURITY_ATTRIBUTES* lpEventAttributes, bool bManualReset, bool bInitialState, wchar_t* lpName);
HANDLE OpenEventW(uint32 dwDesiredAccess, bool bInheritHandle, wchar_t* lpName);
HANDLE CreateMutexW(SECURITY_ATTRIBUTES* lpMutexAttributes, bool bInitialOwner, wchar_t* lpName);
HANDLE OpenMutexW(uint32 dwDesiredAccess, bool bInheritHandle, wchar_t* lpName);
bool ReleaseMutex(HANDLE mutex);
uint32 FormatMessageW(uint32 dwFlags, void* lpSource, uint32 dwMessageId, uint32 dwLanguageId, wchar_t* lpBuffer, uint32 nSize, va_list* Arguments);
int32 WSAGetLastError();
bool CloseHandle_Thread(HANDLE handle);
bool CloseHandle_Process(HANDLE handle);
void GetExitCodeProcess(HANDLE handle, DWORD* code);
bool GetProcessTimes(HANDLE handle, FILETIME* createTime, FILETIME* exitTime, FILETIME* kernelTime, FILETIME* userTime);
bool GetProcessWorkingSetSize(HANDLE handle, size_t* curMin, size_t* curMax);
bool SetProcessWorkingSetSize(HANDLE handle, size_t curMin, size_t curMax);
bool EnumProcessModules(HANDLE handle, HMODULE* mods, DWORD cb, DWORD* needed);
bool GetModuleBaseNameW(HANDLE handle, HMODULE mod, wchar_t* modname, int maxLen);
bool GetModuleFileNameExW(HANDLE handle, HMODULE mod, wchar_t* modname, int maxLen);
bool GetModuleInformation(HANDLE handle, HMODULE mod, MODULEINFO* modinfo, int modInfoSize);
int GetPriorityClass(HANDLE handle);
bool SetPriorityClass(HANDLE handle, int priClass);
bool TerminateProcess(HANDLE handle, int termCode);
bool WaitForInputIdle(HANDLE handle, int ms);
int32 GetCurrentProcessId();
HANDLE GetCurrentProcess();
HANDLE OpenProcess(DWORD desiredAccess, bool inheritHandle, DWORD pid);
bool GetDiskFreeSpaceExW(wchar_t* pathNameStr, ULARGE_INTEGER* wapi_free_bytes_avail, ULARGE_INTEGER* wapi_total_number_of_bytes, ULARGE_INTEGER* wapi_total_number_of_free_bytes);
uint32 GetDriveTypeW(wchar_t* driveName);
bool GetVolumeInformationW(wchar_t* lpRootPathName, wchar_t* lpVolumeNameBuffer, uint32 nVolumeNameSize, uint32* lpVolumeSerialNumber, uint32* lpMaximumComponentLength, uint32* lpFileSystemFlags, wchar_t* lpFileSystemNameBuffer, uint32 nFileSystemNameSize);
uint64 BFClockGetTime();
DWORD GetTimeZoneInformation(TIME_ZONE_INFORMATION* lpTimeZoneInformation);
bool SystemTimeToFileTime(const SYSTEMTIME* lpSystemTime, FILETIME* lpFileTime);
void BFGetThreadRegisters(HANDLE threadHandle, intptr* stackPtr, intptr* dataPtr);
void mkdir(const char* path);
typedef void (*PFLS_CALLBACK_FUNCTION)(void* lpFlsData);
DWORD FlsAlloc(PFLS_CALLBACK_FUNCTION lpCallback);
void* FlsGetValue(DWORD dwFlsIndex);
BOOL FlsSetValue(DWORD dwFlsIndex, void* lpFlsData);
BOOL FlsFree(DWORD dwFlsIndex);