diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2026-07-09 21:49:15 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2026-07-09 21:49:15 +0200 |
| commit | ce51256c91e566d339c6a670af11bab519f98349 (patch) | |
| tree | 1c91c9e15655545f4997c57f9659bb6414ab6949 /src/utils.c | |
| parent | 0379f7634200c35682adb53a6653d441849903ae (diff) | |
Get rid of windows.h
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 56 |
1 files changed, 51 insertions, 5 deletions
diff --git a/src/utils.c b/src/utils.c index 729b74d..d512238 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,6 +1,52 @@ #include "utils.h" -#include <Windows.h> +// ======================= +// ====== windows.h ====== +// ======================= +typedef struct _PROCESS_INFORMATION { + void* hProcess; + void* hThread; + u32 dwProcessId; + u32 dwThreadId; +} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; + +typedef struct _OVERLAPPED { + u32* Internal; + u32* InternalHigh; + union { + struct { + u32 Offset; + u32 OffsetHigh; + } DUMMYSTRUCTNAME; + void* Pointer; + } DUMMYUNIONNAME; + + void* hEvent; +} OVERLAPPED, *LPOVERLAPPED; + +#define SUCCEEDED(hr) (((i32)(hr)) >= 0) + +#if _MSC_VER + #define va_start(ap, x) ((void)(__va_start(&ap, x))) + #define va_arg(ap, t) \ + ((sizeof(t) > sizeof(__int64) || (sizeof(t) & (sizeof(t) - 1)) != 0) \ + ? **(t**)((ap += sizeof(__int64)) - sizeof(__int64)) \ + : *(t* )((ap += sizeof(__int64)) - sizeof(__int64))) + #define va_end(ap) ((void)(ap = (va_list)0)) +#endif + +#define STD_INPUT_HANDLE ((u32)-10) +#define STD_OUTPUT_HANDLE ((u32)-11) +#define STD_ERROR_HANDLE ((u32)-12) + +extern void* GetStdHandle(u32 nStdHandle); + +extern i32 WriteFile(void* hFile, const void* lpBuffer, u32 nNumberOfBytesToWrite, u32* lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); + +extern i32 ReadProcessMemory(void* hProcess, const void* lpBaseAddress, void* lpBuffer, size_t nSize, size_t* lpNumberOfBytesRead); +// ======================== +// ====== !windows.h ====== +// ======================== u8 is_alpha(char c) { return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'); @@ -211,8 +257,8 @@ void print(const char* format, ...) { cur_char += str_len; } else if(*cur_fmt == 'b') { - u8 number = va_arg(args, u8); - u32 str_len = 8U - __lzcnt(number); + u64 number = va_arg(args, u64); + u32 str_len = 64U - __lzcnt(number); i64 relative_fill_count = fill_count - str_len; if (relative_fill_count > 1) { @@ -283,7 +329,7 @@ void print(const char* format, ...) { } va_end(args); - HANDLE standard_err = GetStdHandle(STD_ERROR_HANDLE); + void* standard_err = GetStdHandle(STD_ERROR_HANDLE); SUCCEEDED(WriteFile(standard_err, formatted_str, (u32)(cur_char - formatted_str), NULL, NULL)); } @@ -292,7 +338,7 @@ u8 read_memory(const void* addr, void* buffer, size_t size) { extern PROCESS_INFORMATION proc_info; size_t b_read = 0U; - HRESULT hr = ReadProcessMemory(proc_info.hProcess, addr, buffer, size, &b_read); + i32 hr = ReadProcessMemory(proc_info.hProcess, addr, buffer, size, &b_read); return hr > 0 && b_read == size; } |
