| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501 |
- // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
- // All rights reserved.
- // Code licensed under the BSD License.
- // http://www.anki3d.org/LICENSE
- /// @file
- /// This file includes minimal declarations of Win32 API to avoid Windows.h polution.
- #pragma once
- #include <cstdarg>
- // Minimal Windows.h declaration. Only what's needed.
- extern "C" {
- #define ANKI_WINAPI __stdcall
- #define ANKI_WINBASEAPI __declspec(dllimport)
- #define ANKI_DECLARE_HANDLE(name) \
- struct name##__; \
- typedef struct name##__* name
- #define ANKI_MAKELANGID(p, s) ((((WORD)(s)) << 10) | (WORD)(p))
- // Types
- typedef void VOID;
- typedef int BOOL;
- typedef char CHAR;
- typedef short SHORT;
- typedef int INT;
- typedef long LONG;
- typedef unsigned char UCHAR;
- typedef unsigned short USHORT;
- typedef unsigned int UINT;
- typedef unsigned long ULONG;
- typedef unsigned char BYTE;
- typedef unsigned short WORD;
- typedef unsigned long DWORD;
- typedef unsigned __int64 ULONG_PTR;
- typedef __int64 LONG_PTR;
- typedef __int64 LONGLONG;
- typedef ULONG_PTR SIZE_T;
- typedef LONG HRESULT;
- typedef BYTE BOOLEAN;
- typedef ULONG_PTR DWORD_PTR;
- typedef DWORD* LPDWORD;
- typedef void* HANDLE;
- typedef void* PVOID;
- typedef void* LPVOID;
- typedef const CHAR *LPCSTR, *PCSTR;
- typedef const CHAR* PCZZSTR;
- typedef CHAR* LPSTR;
- typedef struct HINSTANCE__* HINSTANCE;
- typedef HINSTANCE HMODULE;
- typedef wchar_t WCHAR;
- typedef const WCHAR* PCWSTR;
- typedef WCHAR *NWPSTR, *LPWSTR, *PWSTR;
- typedef const void* LPCVOID;
- typedef HANDLE HLOCAL;
- ANKI_DECLARE_HANDLE(HWND);
- typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
- typedef DWORD(ANKI_WINAPI* PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
- typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
- typedef struct _RTL_CRITICAL_SECTION RTL_CRITICAL_SECTION, CRITICAL_SECTION, *LPCRITICAL_SECTION, *PCRITICAL_SECTION;
- typedef struct _RTL_SRWLOCK RTL_SRWLOCK, *PSRWLOCK;
- typedef struct _RTL_CONDITION_VARIABLE RTL_CONDITION_VARIABLE, *PCONDITION_VARIABLE;
- typedef struct _SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA;
- typedef struct _WIN32_FIND_DATAA WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
- typedef union _LARGE_INTEGER LARGE_INTEGER;
- typedef struct _CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
- typedef struct _SYSTEM_INFO SYSTEM_INFO, *LPSYSTEM_INFO;
- // Thread & locks
- ANKI_WINBASEAPI HANDLE ANKI_WINAPI CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
- LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
- ANKI_WINBASEAPI DWORD_PTR ANKI_WINAPI SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
- ANKI_WINBASEAPI DWORD ANKI_WINAPI WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI CloseHandle(HANDLE hObject);
- ANKI_WINBASEAPI DWORD ANKI_WINAPI GetCurrentThreadId(VOID);
- ANKI_WINBASEAPI HRESULT ANKI_WINAPI SetThreadDescription(HANDLE hThread, PCWSTR lpThreadDescription);
- ANKI_WINBASEAPI HRESULT ANKI_WINAPI GetThreadDescription(HANDLE hThread, PWSTR* ppszThreadDescription);
- ANKI_WINBASEAPI HANDLE ANKI_WINAPI GetCurrentThread();
- ANKI_WINBASEAPI VOID ANKI_WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
- ANKI_WINBASEAPI VOID ANKI_WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
- ANKI_WINBASEAPI VOID ANKI_WINAPI LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
- ANKI_WINBASEAPI VOID ANKI_WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
- ANKI_WINBASEAPI VOID ANKI_WINAPI InitializeSRWLock(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI VOID ANKI_WINAPI AcquireSRWLockExclusive(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI VOID ANKI_WINAPI AcquireSRWLockShared(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI VOID ANKI_WINAPI ReleaseSRWLockExclusive(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI VOID ANKI_WINAPI ReleaseSRWLockShared(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI BOOLEAN ANKI_WINAPI TryAcquireSRWLockExclusive(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI BOOLEAN ANKI_WINAPI TryAcquireSRWLockShared(PSRWLOCK SRWLock);
- ANKI_WINBASEAPI VOID ANKI_WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection,
- DWORD dwMilliseconds);
- ANKI_WINBASEAPI VOID ANKI_WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable);
- ANKI_WINBASEAPI VOID ANKI_WINAPI WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
- // Filesystem
- ANKI_WINBASEAPI DWORD ANKI_WINAPI GetFileAttributesA(LPCSTR lpFileName);
- ANKI_WINBASEAPI int ANKI_WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
- ANKI_WINBASEAPI HRESULT ANKI_WINAPI SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
- ANKI_WINBASEAPI HANDLE ANKI_WINAPI FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI FindClose(HANDLE hFindFile);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData);
- ANKI_WINBASEAPI DWORD ANKI_WINAPI GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer);
- // Other
- ANKI_WINBASEAPI DWORD ANKI_WINAPI GetLastError(VOID);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI QueryPerformanceFrequency(LARGE_INTEGER* lpFrequency);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount);
- ANKI_WINBASEAPI VOID ANKI_WINAPI Sleep(DWORD dwMilliseconds);
- ANKI_WINBASEAPI HANDLE ANKI_WINAPI GetStdHandle(DWORD nStdHandle);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
- ANKI_WINBASEAPI VOID ANKI_WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);
- ANKI_WINBASEAPI DWORD ANKI_WINAPI GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize);
- ANKI_WINBASEAPI int ANKI_WINAPI MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
- ANKI_WINBASEAPI DWORD ANKI_WINAPI FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize,
- va_list* Arguments);
- ANKI_WINBASEAPI HLOCAL ANKI_WINAPI LocalFree(HLOCAL hMem);
- ANKI_WINBASEAPI BOOL ANKI_WINAPI IsDebuggerPresent();
- ANKI_WINBASEAPI BOOL ANKI_WINAPI SetProcessDPIAware();
- #undef ANKI_WINBASEAPI
- #undef ANKI_DECLARE_HANDLE
- } // end extern "C"
- // AnKi's wrappers for various Windows.h structs. Required because we can't declare those structs in the global
- // namespace since there are files that might include this header and Windows.h at the same time.
- namespace anki {
- // Consts
- constexpr DWORD INVALID_FILE_ATTRIBUTES = (DWORD)-1;
- constexpr DWORD FILE_ATTRIBUTE_DIRECTORY = 0x00000010;
- constexpr DWORD MAX_PATH = 260;
- static const HANDLE INVALID_HANDLE_VALUE = (HANDLE)(LONG_PTR)-1;
- constexpr DWORD ERROR_NO_MORE_FILES = 18L;
- constexpr WORD FO_DELETE = 0x0003;
- constexpr WORD FOF_NOCONFIRMATION = 0x0010;
- constexpr WORD FOF_NOERRORUI = 0x0400;
- constexpr WORD FOF_SILENT = 0x0004;
- constexpr WORD CSIDL_PROFILE = 0x0028;
- constexpr DWORD STD_OUTPUT_HANDLE = (DWORD)-11;
- constexpr HRESULT S_OK = 0;
- constexpr DWORD INFINITE = 0xFFFFFFFF;
- constexpr DWORD ERROR_INSUFFICIENT_BUFFER = 122l;
- constexpr DWORD ERROR_SUCCESS = 0;
- constexpr WORD FOREGROUND_BLUE = 0x0001;
- constexpr WORD FOREGROUND_GREEN = 0x0002;
- constexpr WORD FOREGROUND_RED = 0x0004;
- constexpr WORD FOREGROUND_INTENSITY = 0x0008;
- constexpr WORD BACKGROUND_BLUE = 0x0010;
- constexpr WORD BACKGROUND_GREEN = 0x0020;
- constexpr WORD BACKGROUND_RED = 0x0040;
- constexpr WORD MB_OK = 0x00000000L;
- constexpr WORD MB_ICONWARNING = 0x00000030L;
- constexpr WORD MB_ICONERROR = 0x00000010L;
- constexpr DWORD FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;
- constexpr DWORD FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;
- constexpr DWORD FORMAT_MESSAGE_FROM_STRING = 0x00000400;
- constexpr DWORD FORMAT_MESSAGE_FROM_HMODULE = 0x00000800;
- constexpr DWORD FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;
- constexpr DWORD FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000;
- constexpr DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF;
- constexpr DWORD LANG_NEUTRAL = 0x00;
- constexpr DWORD SUBLANG_DEFAULT = 0x01;
- // Types
- typedef union _LARGE_INTEGER
- {
- struct
- {
- ULONG LowPart;
- LONG HighPart;
- } DUMMYSTRUCTNAME;
- struct
- {
- ULONG LowPart;
- LONG HighPart;
- } u;
- LONGLONG QuadPart;
- } LARGE_INTEGER;
- typedef struct _SECURITY_ATTRIBUTES
- {
- DWORD nLength;
- LPVOID lpSecurityDescriptor;
- BOOL bInheritHandle;
- } SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
- typedef struct _LIST_ENTRY
- {
- struct _LIST_ENTRY* Flink;
- struct _LIST_ENTRY* Blink;
- } LIST_ENTRY, *PLIST_ENTRY;
- typedef struct _RTL_CRITICAL_SECTION_DEBUG
- {
- WORD Type;
- WORD CreatorBackTraceIndex;
- struct _RTL_CRITICAL_SECTION* CriticalSection;
- LIST_ENTRY ProcessLocksList;
- DWORD EntryCount;
- DWORD ContentionCount;
- DWORD Flags;
- WORD CreatorBackTraceIndexHigh;
- WORD SpareWORD;
- } RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG;
- #pragma pack(push, 8)
- typedef struct _RTL_CRITICAL_SECTION
- {
- PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
- LONG LockCount;
- LONG RecursionCount;
- HANDLE OwningThread;
- HANDLE LockSemaphore;
- ULONG_PTR SpinCount;
- } CRITICAL_SECTION, *LPCRITICAL_SECTION, *PCRITICAL_SECTION;
- #pragma pack(pop)
- typedef struct _RTL_SRWLOCK
- {
- PVOID Ptr;
- } SRWLOCK, *PSRWLOCK;
- typedef struct _RTL_CONDITION_VARIABLE
- {
- PVOID Ptr;
- } CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE, *PCONDITION_VARIABLE;
- typedef WORD FILEOP_FLAGS;
- typedef struct _SHFILEOPSTRUCTA
- {
- HWND hwnd;
- UINT wFunc;
- PCZZSTR pFrom;
- PCZZSTR pTo;
- FILEOP_FLAGS fFlags;
- BOOL fAnyOperationsAborted;
- LPVOID hNameMappings;
- PCSTR lpszProgressTitle;
- } SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA;
- typedef struct _FILETIME
- {
- DWORD dwLowDateTime;
- DWORD dwHighDateTime;
- } FILETIME, *PFILETIME, *LPFILETIME;
- typedef struct _WIN32_FIND_DATAA
- {
- DWORD dwFileAttributes;
- FILETIME ftCreationTime;
- FILETIME ftLastAccessTime;
- FILETIME ftLastWriteTime;
- DWORD nFileSizeHigh;
- DWORD nFileSizeLow;
- DWORD dwReserved0;
- DWORD dwReserved1;
- CHAR cFileName[MAX_PATH];
- CHAR cAlternateFileName[14];
- } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
- typedef struct _COORD
- {
- SHORT X;
- SHORT Y;
- } COORD, *PCOORD;
- typedef struct _SMALL_RECT
- {
- SHORT Left;
- SHORT Top;
- SHORT Right;
- SHORT Bottom;
- } SMALL_RECT, *PSMALL_RECT;
- typedef struct _CONSOLE_SCREEN_BUFFER_INFO
- {
- COORD dwSize;
- COORD dwCursorPosition;
- WORD wAttributes;
- SMALL_RECT srWindow;
- COORD dwMaximumWindowSize;
- } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
- typedef struct _SYSTEM_INFO
- {
- union
- {
- DWORD dwOemId; // Obsolete field...do not use
- struct
- {
- WORD wProcessorArchitecture;
- WORD wReserved;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- DWORD dwPageSize;
- LPVOID lpMinimumApplicationAddress;
- LPVOID lpMaximumApplicationAddress;
- DWORD_PTR dwActiveProcessorMask;
- DWORD dwNumberOfProcessors;
- DWORD dwProcessorType;
- DWORD dwAllocationGranularity;
- WORD wProcessorLevel;
- WORD wProcessorRevision;
- } SYSTEM_INFO, *LPSYSTEM_INFO;
- // Critical section
- inline void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
- {
- ::InitializeCriticalSection(reinterpret_cast<::LPCRITICAL_SECTION>(lpCriticalSection));
- }
- inline void EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
- {
- ::EnterCriticalSection(reinterpret_cast<::LPCRITICAL_SECTION>(lpCriticalSection));
- }
- inline BOOL TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
- {
- return ::TryEnterCriticalSection(reinterpret_cast<::LPCRITICAL_SECTION>(lpCriticalSection));
- }
- inline void LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
- {
- ::LeaveCriticalSection(reinterpret_cast<::LPCRITICAL_SECTION>(lpCriticalSection));
- }
- inline void DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
- {
- ::DeleteCriticalSection(reinterpret_cast<::LPCRITICAL_SECTION>(lpCriticalSection));
- }
- // Shared lock
- inline void InitializeSRWLock(PSRWLOCK SRWLock)
- {
- ::InitializeSRWLock(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline void AcquireSRWLockExclusive(PSRWLOCK SRWLock)
- {
- ::AcquireSRWLockExclusive(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline void AcquireSRWLockShared(PSRWLOCK SRWLock)
- {
- ::AcquireSRWLockShared(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline void ReleaseSRWLockExclusive(PSRWLOCK SRWLock)
- {
- ::ReleaseSRWLockExclusive(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline void ReleaseSRWLockShared(PSRWLOCK SRWLock)
- {
- ::ReleaseSRWLockShared(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline BOOL TryAcquireSRWLockExclusive(PSRWLOCK SRWLock)
- {
- return ::TryAcquireSRWLockExclusive(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- inline BOOL TryAcquireSRWLockShared(PSRWLOCK SRWLock)
- {
- return ::TryAcquireSRWLockShared(reinterpret_cast<::PSRWLOCK>(SRWLock));
- }
- // Condition var
- inline void InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
- {
- ::InitializeConditionVariable(reinterpret_cast<::PCONDITION_VARIABLE>(ConditionVariable));
- }
- inline BOOL SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds)
- {
- return ::SleepConditionVariableCS(reinterpret_cast<::PCONDITION_VARIABLE>(ConditionVariable),
- reinterpret_cast<::PCRITICAL_SECTION>(CriticalSection), dwMilliseconds);
- }
- inline void WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable)
- {
- ::WakeAllConditionVariable(reinterpret_cast<::PCONDITION_VARIABLE>(ConditionVariable));
- }
- inline void WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
- {
- ::WakeConditionVariable(reinterpret_cast<::PCONDITION_VARIABLE>(ConditionVariable));
- }
- // Filesystem
- inline DWORD GetFileAttributesA(LPCSTR lpFileName)
- {
- return ::GetFileAttributesA(lpFileName);
- }
- inline int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
- {
- return ::SHFileOperationA(reinterpret_cast<::LPSHFILEOPSTRUCTA>(lpFileOp));
- }
- inline BOOL CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
- {
- return ::CreateDirectoryA(lpPathName, reinterpret_cast<::LPSECURITY_ATTRIBUTES>(lpSecurityAttributes));
- }
- inline HRESULT SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPSTR pszPath)
- {
- return ::SHGetFolderPathA(hwnd, csidl, hToken, dwFlags, pszPath);
- }
- inline HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
- {
- return ::FindFirstFileA(lpFileName, reinterpret_cast<::LPWIN32_FIND_DATAA>(lpFindFileData));
- }
- inline BOOL FindClose(HANDLE hFindFile)
- {
- return ::FindClose(hFindFile);
- }
- inline BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
- {
- return ::FindNextFileA(hFindFile, reinterpret_cast<::LPWIN32_FIND_DATAA>(lpFindFileData));
- }
- inline DWORD GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer)
- {
- return ::GetTempPathA(nBufferLength, lpBuffer);
- }
- // Other
- inline BOOL QueryPerformanceFrequency(LARGE_INTEGER* lpFrequency)
- {
- return ::QueryPerformanceFrequency(reinterpret_cast<::LARGE_INTEGER*>(lpFrequency));
- }
- inline BOOL QueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount)
- {
- return ::QueryPerformanceCounter(reinterpret_cast<::LARGE_INTEGER*>(lpPerformanceCount));
- }
- inline BOOL GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo)
- {
- return ::GetConsoleScreenBufferInfo(hConsoleOutput, reinterpret_cast<::PCONSOLE_SCREEN_BUFFER_INFO>(lpConsoleScreenBufferInfo));
- }
- inline VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo)
- {
- ::GetSystemInfo(reinterpret_cast<::LPSYSTEM_INFO>(lpSystemInfo));
- }
- inline DWORD GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize)
- {
- return ::GetModuleFileNameA(hModule, lpFilename, nSize);
- }
- inline int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
- {
- return ::MessageBoxA(hWnd, lpText, lpCaption, uType);
- }
- inline DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list* Arguments)
- {
- return ::FormatMessageA(dwFlags, lpSource, dwMessageId, dwLanguageId, lpBuffer, nSize, Arguments);
- }
- inline HLOCAL LocalFree(HLOCAL hMem)
- {
- return ::LocalFree(hMem);
- }
- inline BOOL IsDebuggerPresent()
- {
- return ::IsDebuggerPresent();
- }
- inline BOOL SetProcessDPIAware()
- {
- return ::SetProcessDPIAware();
- }
- } // end namespace anki
|