Mercurial > minori
comparison dep/animone/src/fd/win32.cc @ 310:a4257370de16
dep/animone: prepare for v1.0 release; it should be ready by now
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Tue, 11 Jun 2024 04:38:51 -0400 |
| parents | b1f625b0227c |
| children | a7d4e5107531 |
comparison
equal
deleted
inserted
replaced
| 309:bf89fbf7ff38 | 310:a4257370de16 |
|---|---|
| 1 /* | |
| 2 * fd/win32.cc: support for windows | |
| 3 * | |
| 4 * this file is noticably more complex than *nix, and that's because | |
| 5 * there is no "simple" way to get the paths of a file. In fact, this thing requires | |
| 6 * you to use *internal functions* that can't even be linked to, hence why we have to | |
| 7 * use GetProcAddress and such. what a mess. | |
| 8 * | |
| 9 * Speaking of which, because this file uses internal functions of the OS, it is not | |
| 10 * even guaranteed to work far into the future. however, just like with macOS, these | |
| 11 * things have stayed the same since Vista so if Microsoft *really* wants compatibility | |
| 12 * then they're pretty much forced to keeping this the same anyway. | |
| 13 */ | |
| 1 #include "animone/fd/win32.h" | 14 #include "animone/fd/win32.h" |
| 2 #include "animone.h" | 15 #include "animone.h" |
| 3 #include "animone/util/win32.h" | 16 #include "animone/util/win32.h" |
| 4 | 17 |
| 5 #include <stdexcept> | 18 #include <stdexcept> |
| 16 #include <stringapiset.h> | 29 #include <stringapiset.h> |
| 17 #include <tlhelp32.h> | 30 #include <tlhelp32.h> |
| 18 #include <windows.h> | 31 #include <windows.h> |
| 19 #include <winternl.h> | 32 #include <winternl.h> |
| 20 | 33 |
| 21 /* This file is noticably more complex than Unix and Linux, and that's because | |
| 22 * there is no "simple" way to get the paths of a file. In fact, this thing requires | |
| 23 * you to use *internal functions* that can't even be linked to, hence why we have to | |
| 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 | |
| 31 /* SystemExtendedHandleInformation is only available in NT 5.1+ (XP and higher) and provides information for | 34 /* SystemExtendedHandleInformation is only available in NT 5.1+ (XP and higher) and provides information for |
| 32 * 32-bit PIDs, unlike SystemHandleInformation | 35 * 32-bit PIDs, unlike SystemHandleInformation |
| 33 */ | 36 */ |
| 34 static constexpr SYSTEM_INFORMATION_CLASS SystemExtendedHandleInformation = static_cast<SYSTEM_INFORMATION_CLASS>(0x40); | 37 static constexpr SYSTEM_INFORMATION_CLASS SystemExtendedHandleInformation = static_cast<SYSTEM_INFORMATION_CLASS>(0x40); |
| 35 static constexpr NTSTATUS STATUS_INFO_LENGTH_MISMATCH = 0xC0000004UL; | 38 static constexpr NTSTATUS STATUS_INFO_LENGTH_MISMATCH = 0xC0000004UL; |
