如何通过指向此函数的指针调用winapi函数?

时间:2013-05-14 13:22:09

标签: c++ call dllimport dllexport

我使用ntdll.dll winapi函数动态地从GetProcAddress获取函数:

HMODULE ntdllh = LoadLibrary(L"ntdll.dll");
unsigned char* ptrToNtLoadDriver 
                        = (unsigned char*)GetProcAddress(ntdllh, "NtLoadDriver");

如何通过NtLoadDriver致电ptrToNtLoadDriver功能?我想到了这样的事情:((NTSTATUS NtLoadDriver(PUNICODE_STRING driverServiceName))ptrToNtLoadDriver)(fooString)

2 个答案:

答案 0 :(得分:1)

  1. 为要调用的函数类型执行typedef“X”(例如:“typedef returntype(* X)(argtype);”)
  2. 将“unsigned char * ptrToNtLoadDriver”更改为“X ptrToNtLoadDriver”
  3. 将函数调用为“ptrToNtLoadDriver(argsHere)”

答案 1 :(得分:0)

((NTSTATUS(WINAPI *)(PUNICODE_STRING))ptrToNtLoadDriver)(fooStrin);