SymLoadModule 函数 (dbghelp.h)

加载符号表。

此函数已被 SymLoadModuleEx 函数取代。

语法

DWORD IMAGEAPI SymLoadModule(
  [in]           HANDLE hProcess,
  [in, optional] HANDLE hFile,
  [in, optional] PCSTR  ImageName,
  [in, optional] PCSTR  ModuleName,
  [in]           DWORD  BaseOfDll,
  [in]           DWORD  SizeOfDll
);

参数

[in] hProcess

进程的句柄。 此句柄必须以前传递给 SymInitialize 函数。

[in, optional] hFile

可执行映像的文件的句柄。 此参数主要由调试器使用,其中调试器传递从调试事件获取的文件句柄。 值为 NULL 表示未使用 hFile

[in, optional] ImageName

可执行映像的名称。 此名称可以包含部分路径、完整路径或完全不包含路径。 如果无法按提供的名称找到文件,则使用符号搜索路径。

[in, optional] ModuleName

模块的快捷方式名称。 如果指针值为 NULL,则库将使用符号文件的基名称创建一个名称。

[in] BaseOfDll

模块的加载地址。 如果值为零,则库将从符号文件获取加载地址。 符号文件中包含的加载地址不一定是实际的加载地址。 调用此函数时,具有实际加载地址的调试器和其他应用程序应使用实际负载地址。

如果映像是 .pdb 文件,则此参数不能为零。

[in] SizeOfDll

模块的大小(以字节为单位)。 如果值为零,则库将从符号文件获取大小。 符号文件中包含的大小不一定是实际大小。 调用此函数时,具有实际大小的调试器和其他应用程序应使用实际大小。

如果映像是 .pdb 文件,则此参数不能为零。

返回值

如果函数成功,则返回值是已加载模块的基址。

如果函数失败,则返回值为零。 若要检索扩展的错误信息,请调用 GetLastError

如果模块已加载,则返回值为零, GetLastError 返回 ERROR_SUCCESS

备注

符号处理程序为模块创建一个条目,如果已关闭延迟符号加载选项,则会尝试加载符号。 如果启用了延迟符号加载,则会将模块标记为延迟,并且除非对模块中的符号进行引用,否则不会加载符号。

若要卸载符号表,请使用 SymUnloadModule64 函数。

所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

此函数取代 SymLoadModule 函数。 有关详细信息,请参阅 更新的平台支持SymLoadModule 在 DbgHelp.h 中定义如下。

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymLoadModule SymLoadModule64
#else
DWORD
IMAGEAPI
SymLoadModule(
    __in HANDLE hProcess,
    __in_opt HANDLE hFile,
    __in_opt PCSTR ImageName,
    __in_opt PCSTR ModuleName,
    __in DWORD BaseOfDll,
    __in DWORD SizeOfDll
    );
#endif

要求

   
目标平台 Windows
标头 dbghelp.h
Library Dbghelp.lib
DLL Dbghelp.dll
可再发行组件 DbgHelp.dll 5.1 或更高版本

另请参阅

DbgHelp 函数

SymInitialize

SymUnloadModule64