我在用Module32First枚举进程模块是时候,总是失败!    返回错误码:ERROR_NO_MORE_FILES 根据MSDN上说:返回此错误码时,表示枚举的模块不存在或镜像无此模块信息。在调试时,在代此段代码中插入一个断点,Module32First运行正常。请帮帮我,谢谢!

解决方案 »

  1.   

    Module32First的第2参数,MODULEENTRY32结构中的dwSize要设置为结构大小。
      

  2.   


    hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId); if(INVALID_HANDLE_VALUE == hModuleSnap)
    {
    ErrorShow("TH32CS_SNAPMODULE");
    return FALSE;
    } //ZeroMemory(&me32, sizeof(me32));
    me32.dwSize = sizeof( MODULEENTRY32 ); BOOL bReault =  Module32First( hModuleSnap, &me32 );
      

  3.   

    就是这样写,如果还是失败,那就是其它部分代码有问题。dwProcessId的值是怎么得到的?
      

  4.   

    程序运行权限跟debug相同吗?
      

  5.   


    代码之间冲突?程序运行权限,不知道是什么?--------------------------------------------------------------------------------当我使用EnumProcessModules枚举时,同样存在类似问题.    返回错误: ERROR_PARTIAL_COPY
      

  6.   

    获取进程模块是有安全限制的,尤其对于内核进程,这点在vista上尤其明显。可以用GetLastError获取错误码看看原因