为什么我用GetMappedFileName函数返回总是0,GetLastError()总是59
我想用GetMappedFileName来实现读内存的Image文件名,但不知道为什么总是有错误,GetMappedFileName的错误代码为59(出现了意外的网络错误。)
下面是我的代码.
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <winbase.h>
typedef DWORD (_stdcall * PGet)(HANDLE,LPVOID,LPTSTR,DWORD);
HANDLE hSnapshot;
BOOL bok;
MODULEENTRY32 me;
MEMORY_BASIC_INFORMATION info;
TCHAR name[MAX_PATH];
HINSTANCE hpsapi;
int len;
PROC pfuc;
PGet pGet;
void main()
{
me.dwSize =sizeof(MODULEENTRY32);
pfuc=MessageBoxA;
hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,0);
VirtualQuery(pfuc,&info,sizeof(MEMORY_BASIC_INFORMATION));
printf("%x\n",info.AllocationBase);
hpsapi=LoadLibrary("d:\\windows\\system32\\psapi.dll");
if(hpsapi!=NULL)
{
printf("Load ok\n");
pGet=(PGet)GetProcAddress(hpsapi,"GetMappedFileNameW");
if(pGet!=NULL)
{
len=pGet(GetCurrentProcess(),info.AllocationBase,name,256);
if(len==0)
len=GetLastError();//59
printf("%d %s\n",len,name);
}
}
bok=Module32First(hSnapshot,&me);
while(bok)
{
printf("%s ",me.szModule);
printf("%x\n",(HINSTANCE)me.hModule);
bok=Module32Next(hSnapshot,&me);
}
}