C++显式加载dll时,FARPROC createPtr = GetProcAddress(dllHandle, "CreateModule");这里的createPtr如何指示不同的函数指针
时间: 2024-12-08 09:19:14 浏览: 19
mfcdll.rar_MFC 加载dll
`GetProcAddress`函数用于从模块(如DLL)中获取特定函数的入口点(即函数地址),在C++中,`FARPROC`是一个指向函数的指针类型。当你通过`GetProcAddress`传入模块句柄(`dllHandle`)和函数名("CreateModule"`)时,它会返回对应函数的地址到`createPtr`变量。
`createPtr`实际上存储的是名为"CreateModule"的函数在DLL中的内存位置,这样你可以通过解引用`createPtr`来调用该函数,就像在当前进程中调用本地函数一样。例如:
```cpp
// 假设dllHandle已经正确初始化
FARPROC createPtr = GetProcAddress(dllHandle, "CreateModule");
if (createPtr)
{
// 如果函数存在,就可以尝试调用
HMODULE module = CreateRemoteThread(hProcess, NULL, 0, createPtr, lpParameter, 0, &tid);
// ...
}
else
{
// 函数不存在,处理错误
std::cerr << "Failed to find function CreateModule in the DLL." << std::endl;
}
```
这里`CreateRemoteThread`函数就是通过`createPtr`来创建一个在远程进程中的线程,执行DLL中的`CreateModule`函数。
阅读全文