为什么我用GetMappedFileName函数返回总是0,GetLastError()总是59

maijian 2004-02-06 04:02:28
我想用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);

}
}
...全文
198 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧