Windows API头文件,用于定义动态调用的函数

时间:2015-04-23 10:16:48

标签: c++ winapi dynamic typedef dllimport

是否有可用的C头文件定义了函数调用,可以代替手动为每个我想要调用的函数写出typedef?

typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT)

以上是我发现自己经常写的东西。

我含糊地回忆起Zeus Trojan源代码中包含的内容,它定义了极大量的Windows函数,但是,我正在尝试创建一个合法的Windows程序。包括木马代码在内的一些东西,即使是良性的,即使我们把许可证问题(虽然它不太可能让任何人起诉我)放在一边,看起来有点令人反感。

我正在浏览github上的carberp和zeus代码并且遇到了

#define pSetFilePointer             pushargEx< DLL_KERNEL32, 0xEF48E03A, 27 >

在carberp中名为GetApi.h的文件中,这是非常偷偷摸摸的,而不是我感兴趣的。这在代码的其他地方调用,但参数从未严格定义。我假设作者写了一个编译器指令来说出&#34的内容;只要相信我们&#34;正如其名称所暗示的pushargEx使用重载来获取但是指定了许多args并将其推送到具有特定偏移量的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)
...
...

有没有&#34;只相信我&#34;编译器或宏指令我可以/应该使用这样做?我真正想做的就是在学习新内容的同时动态地包含大量的WINAPI函数调用 - 同时保持相当干净的代码。

在谈到这个时,我应该使用具体的措辞吗?我觉得我使用的词语肯定不是我想要实现的,而是限制了我找到​​有关这个主题的更多信息的能力。

1 个答案:

答案 0 :(得分:2)

  

是否有可用的C头文件定义了函数调用,可以代替手动为每个我想要调用的函数写出typedef?

没有

我有点好奇为什么你觉得有必要为MessageBoxSetFilePointer之类的功能使用运行时链接。我想知道你是否错误地认为在运行时而不是在加载时链接到它们是一个好的策略。