/* * PROJECT: ReactOS Console Utilities Library * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) * PURPOSE: Base set of functions for loading string resources * and message strings, and handle type identification. * COPYRIGHT: Copyright 2017-2021 ReactOS Team * Copyright 2017-2021 Hermes Belusca-Maito */ /** * @file utils.h * @ingroup ConUtils * * @brief General-purpose utility functions (wrappers around * or reimplementations of Win32 APIs). **/ #ifndef __UTILS_H__ #define __UTILS_H__ #pragma once #ifndef _UNICODE #error The ConUtils library at the moment only supports compilation with _UNICODE defined! #endif #ifdef __cplusplus extern "C" { #endif /* Avoid including winuser.h for these definitions */ #ifndef IS_INTRESOURCE #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) #endif #ifndef MAKEINTRESOURCEA #define MAKEINTRESOURCEA(i) ((LPSTR)(ULONG_PTR)LOWORD(i)) #endif #ifndef MAKEINTRESOURCEW #define MAKEINTRESOURCEW(i) ((LPWSTR)(ULONG_PTR)LOWORD(i)) #endif // #define MAKEINTRESOURCE(i) ((ULONG_PTR)((WORD)(i))) INT WINAPI K32LoadStringExW( IN HINSTANCE hInstance OPTIONAL, IN UINT uID, IN LANGID LanguageId, OUT LPWSTR lpBuffer, IN INT nBufferMax); INT WINAPI K32LoadStringW( IN HINSTANCE hInstance OPTIONAL, IN UINT uID, OUT LPWSTR lpBuffer, IN INT nBufferMax); /* Override LoadString */ #ifdef LoadString #undef LoadString #endif #define LoadStringW K32LoadStringW #if defined(UNICODE) || defined(_UNICODE) #define LoadString LoadStringW #else #error The ConUtils library only supports UNICODE at the moment! #endif // UNICODE DWORD WINAPI FormatMessageSafeW( IN DWORD dwFlags, IN LPCVOID lpSource OPTIONAL, IN DWORD dwMessageId, IN DWORD dwLanguageId, OUT LPWSTR lpBuffer, IN DWORD nSize, IN va_list *Arguments OPTIONAL); LANGID ConSetThreadUILanguage( IN LANGID LangId OPTIONAL); BOOL IsTTYHandle(IN HANDLE hHandle); BOOL IsConsoleHandle(IN HANDLE hHandle); // #include #ifdef __cplusplus } #endif #endif /* __UTILS_H__ */ /* EOF */