我写了一个 DLL 文件,我可以将它注入到另一个进程中。一旦注入,它应该创建一个消息框。它似乎创建了无限数量的消息框并且我的计算机崩溃了。有任何想法吗?另外,DLLIMPORT 和 DWORD WINAPI 有什么区别?Main 应该是 DLLIMPORT 还是其他?
dllmain.c
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
DLLIMPORT void HelloWorld() {
MessageBox(0,"Hello World from DLL!\n","Hi",MB_ICONINFORMATION);
}
int main() {
MessageBox(0,"Hello World from DLL!\n","Hi",MB_ICONINFORMATION);
}
DWORD WINAPI Main(LPVOID lpParam) {
main();
return S_OK;
}
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
CreateThread(NULL, 0, &Main, NULL, 0, NULL);
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
dll.h
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
#define DLLIMPORT __declspec(dllexport)
#else
#define DLLIMPORT __declspec(dllimport)
#endif
DLLIMPORT void HelloWorld();
#endif