SymInitialize函数初始化进程的符号处理程序。
BOOL SymInitialize(
IN HANDLE【hProcess】, | |
IN LPSTR【UserSearchPath】, | |
IN BOOL【fInvadeProcess】 | |
); |
参数
【hProcess】
要维护符号的过程句柄。如果应用程序是调试器,则使用正在调试的对象的进程句柄,否则GetCurrentProcess提供有效的进程句柄。句柄不用作真正的进程句柄,所以任何值都可以和下一个一样工作。对handle值的唯一限制是每次应用程序调用{??989796040}时都是唯一的限制。此外,如果【fInvadeProcess】标志为TRUE,则句柄【必须】为有效的进程标识。
【UserSearchPath】
由分号(;)分隔的路径或一系列路径,用于搜索符号文件。如果使用NULL值,则IMAGEHLP将尝试从以下来源形成符号路径:
*当前目录
*环境变量_NT_SYMBOL_PATH
*环境变量_NT_ALTERNATE_SYMBOL_PATH
*环境变量SYSTEMROOT
【fInvadeProcess】
如果此值为TRUE,则IMAGEHLP将枚举加载的进程模块,并为每个模块有效地调用SymLoadModule.在这种情况下,【hProcess】参数必须是有效的Win32进程句柄。
返回值
如果函数成功,返回值为TRUE。
如果函数失败,则返回值为FALSE。要检索扩展错误信息,请调用GetLastError.
备注
SymInitialize函数用于初始化进程的符号处理程序。在符号处理程序的上下文中,进程是在收集符号信息时使用的方便对象。通常,调试器和其他需要加载被调试进程的符号的工具使用符号处理程序。
传递给SymInitialize的进程句柄可以是任何唯一的值,除非【fInvadeProcess】为TRUE。传递给SymInitialize 【必须】的值与传递给所有其他IMAGEHLP符号处理函数的值相同。它是IMAGEHLP用来识别呼叫者并找到正确的符号信息的过程句柄。调用配对函数SymCleanup,【必须】取消分配与加载符号的进程相关联的所有资源。