Mercurial > minori
comparison dep/animia/src/fd/win32.cc @ 169:e44b7c428d7c
dep/animia: add libkvm method (UNTESTED)
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Sun, 19 Nov 2023 17:30:38 -0500 |
| parents | cdf79282d647 |
| children | c413e475f496 |
comparison
equal
deleted
inserted
replaced
| 168:79a2a24453fa | 169:e44b7c428d7c |
|---|---|
| 1 /* | |
| 2 ** win32.cpp | |
| 3 ** - provides support for Windows clients | |
| 4 ** | |
| 5 */ | |
| 6 #include "animia/fd/win32.h" | 1 #include "animia/fd/win32.h" |
| 7 #include "animia/util/win32.h" | 2 #include "animia/util/win32.h" |
| 8 #include "animia.h" | 3 #include "animia.h" |
| 9 | 4 |
| 10 #include <stdexcept> | 5 #include <stdexcept> |
| 22 #include <tlhelp32.h> | 17 #include <tlhelp32.h> |
| 23 #include <windows.h> | 18 #include <windows.h> |
| 24 #include <winternl.h> | 19 #include <winternl.h> |
| 25 | 20 |
| 26 /* This file is noticably more complex than Unix and Linux, and that's because | 21 /* This file is noticably more complex than Unix and Linux, and that's because |
| 27 there is no "simple" way to get the paths of a file. In fact, this thing requires | 22 * there is no "simple" way to get the paths of a file. In fact, this thing requires |
| 28 you to use *internal functions* that can't even be linked to, hence why we have to | 23 * you to use *internal functions* that can't even be linked to, hence why we have to |
| 29 use GetProcAddress and such. What a mess. */ | 24 * use GetProcAddress and such. What a mess. |
| 25 * | |
| 26 * Speaking of which, because this file uses internal functions of the OS, it is not | |
| 27 * guaranteed to work far into the future. However, it has worked since NT 6.0 (Vista) | |
| 28 * at least, so it's unlikely to be changed much ever. | |
| 29 */ | |
| 30 | 30 |
| 31 /* SystemExtendedHandleInformation is only available in NT 5.1+ (XP and higher) and provides information for | 31 /* SystemExtendedHandleInformation is only available in NT 5.1+ (XP and higher) and provides information for |
| 32 32-bit PIDs, unlike SystemHandleInformation */ | 32 * 32-bit PIDs, unlike SystemHandleInformation |
| 33 */ | |
| 33 constexpr SYSTEM_INFORMATION_CLASS SystemExtendedHandleInformation = static_cast<SYSTEM_INFORMATION_CLASS>(0x40); | 34 constexpr SYSTEM_INFORMATION_CLASS SystemExtendedHandleInformation = static_cast<SYSTEM_INFORMATION_CLASS>(0x40); |
| 34 | 35 |
| 35 /* more constants not in winternl.h */ | 36 /* more constants not in winternl.h */ |
| 36 constexpr NTSTATUS STATUS_INFO_LENGTH_MISMATCH = 0xC0000004UL; | 37 constexpr NTSTATUS STATUS_INFO_LENGTH_MISMATCH = 0xC0000004UL; |
| 37 | 38 |
