WEB开发网
开发学院软件开发VC 定制调试诊断工具和实用程序(4) 阅读

定制调试诊断工具和实用程序(4)

 2006-07-20 11:42:31 来源:WEB开发网   
核心提示:本文假设你熟悉 Win32,DLL 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(一) 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(二) 定制调试诊断工具和实用程序&md

本文假设你熟悉 Win32,DLL

  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(一)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(二)
  • 定制调试诊断工具和实用程序——摆脱DLL"地狱"(DLL Hell)的困扰(三)

如何通过 WTS APIs(Windows终端服务 APIs)获取进程信息

Windows XP 有一个新特性叫做“快速用户转换——Fast User Switching”,这个特性允许多个用户同时在一台机器上登陆。当一个用户登陆后,另一个用户启动的进程仍然能够运行。这个神奇的特性所倚仗的是 WTS APIs。如果你想了解更多有关 WTS 的内容,可以参考 MSJ Oct99 的一篇文章:“Windows NT和 Windows 2000 终端服务APIs介绍”,作者是 Frank Kim。

Windows XP为每一个登陆用户创建一个WTS会话(Session)。每个运行进程总是与这样一个Session关联。Windows XP的任务管理器允许你列出进程清单,不论是针对所有会话的还是仅仅针对自己的会话,任务管理器对话框的进程标签中有一个"显示所有用户的进程"复选框可以对此进行选择。(如图十一所示):

图十一 任务管理其的进程列表

如果你想了解某个进程隶属的 session ID,可以调用 kernel32.dll 输出的一个 API 函数 ProcessIdToSessionId。给定一个进程的ID,他返回相应的 session ID。有趣的是这个 API 函数不是由 wtsapi32.dll 输出的,而是出自于 kernel32.dll,前者是所有 Windows 终端服务 APIs 的输出动态库。实际上,即使 Windows 终端服务没有运行起来,Windows 2000 和 Windows XP 都将 session ID 存储在 PEB 中。

1 2 3  下一页

Tags:定制 调试 诊断

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接