Доступен ли заголовочный файл C, определяющий вызовы функций, которые можно использовать вместо ручного написания typedef для каждого вызова, который я хочу сделать?
typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT)
Вышеизложенное — это то, что я постоянно пишу.
Я смутно припоминаю, что в исходный код трояна Zeus было включено что-то, определяющее чрезвычайно большое количество функций Windows, однако я пытаюсь создать законную программу для Windows. Кое-что о включении троянского кода, пусть даже безвредного, кажется немного неприятным, даже если мы отложим в сторону вопросы лицензии (хотя маловероятно, что кто-то собирается подать на меня в суд).
Я просматривал код carberp и zeus на github и наткнулся
#define pSetFilePointer pushargEx< DLL_KERNEL32, 0xEF48E03A, 27 >
В файле с именем GetApi.h в carberp это довольно хитро и не то, что меня интересует. Это вызывается в другом месте кода, но аргументы никогда строго не определяются. Я предполагаю, что авторы написали директиву компилятора, чтобы сказать что-то вроде «просто доверьтесь нам», поскольку pushargEx, как следует из его названия, использует перегрузку, чтобы взять любое количество указанных аргументов и отправить их в дескриптор DLL с определенным смещением.
Если это то, что мне нужно сделать, чтобы упростить мой код, то это не самое худшее, что может быть, но, конечно же, я не первый, кто ищет заголовочный файл, определяющий
typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT)
typedef int (WINAPI *pMessageBoxA)(HWND, LPCSTR, LPCSTR, UINT)
typedef int (WINAPI *pSetFilePointer)(HANDLE, LONG, PLONG, DWORD)
...
...
Есть ли компилятор «просто доверься мне» или директива макроса, которую я могу/должен использовать для этого? Все, что я действительно хочу сделать, это динамически включать многочисленные вызовы функций WINAPI, изучая что-то новое и одновременно поддерживая достаточно чистый код.
Есть ли конкретная формулировка, которую я должен использовать, говоря об этом? Мне кажется, что именно слова, которые я использую, а не то, чего я пытаюсь достичь, ограничивают мою способность найти больше информации по этой теме.