近日学习时想到的一些问题,望大家能帮助解答,谢谢。用GetModuleHandle函数可以得到进程中指定模块的基地址,比如:HMODULE hMod = GetModuleHandle("user32.dll");那么请问,怎么可以得到进程中指定模块的长度呢?

解决方案 »

  1.   

    文件大小?
    TCHAR szPath[MAX_PATH];
    if ( GetModuleFileName(GetModuleHandle(_T("user32.dll"), szPath, MAX_PATH) > 0 )
    {
    HANDLE hFile = CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0L, NULL);
    if (hFile)
    {
    DWORD dwSize = GetFileSize(hFile, NULL); CloseHandle(hFile);
    }
    }
      

  2.   


    to dbger:不是指文件的大小,我是想问:如何得到文件在内存中的镜像的大小。不知这样说是否清楚了呢?
      

  3.   


    BOOL GetModuleInformation(
      HANDLE hProcess,
      HMODULE hModule,
      LPMODULEINFO lpmodinfo,
      DWORD cb
    );
      

  4.   


    to dbger:The GetModuleInformation function retrieves information about the specified module in the MODULEINFO structure. 哈哈,就是这样函数了。dbger,谢谢你。