【问题标题】:Get process info making request inside TDI filter driver在 TDI 过滤器驱动程序中获取进程信息发出请求
【发布时间】:2012-04-14 19:07:36
【问题描述】:

我开始编写 TDI 过滤器驱动程序,我想知道的一件事是哪个进程正在生成请求。我猜这些信息在(大部分未记录的)结构中的某处可用。例如,我目前在 TDI_CONNECT 事件中获取 IP 地址和端口,如下所示:

stackIrp = IoGetCurrentIrpStackLocation(irp);
connectRequest = (TDI_REQUEST_KERNEL_CONNECT*) &stackIrp->Parameters;
transportAddr = (TRANSPORT_ADDRESS*) connectRequest->RequestConnectionInformation->RemoteAddress;
taAddr = (TA_ADDRESS*) transportAddr->Address;
ipAddr = (TDI_ADDRESS_IP*) taAddr->Address;

我最终只是得到一个套接字句柄,我必须向后工作以获取进程信息,还是我在某个地方得到一个进程 ID?

最终我想知道进程信息(EXE 名称、句柄等),但还需要知道拥有进程正在运行的会话的 Windows 用户......因为是的,我在写另一个网站过滤应用程序,与其他所有其他应用程序一样,它需要为每个用户提供不同的选项。

【问题讨论】:

    标签: windows tcp kernel driver


    【解决方案1】:

    您可以使用http://msdn.microsoft.com/en-us/library/windows/hardware/ff548391(v=vs.85).aspx 中描述的“IoGetRequestorProcessId”例程来为最初请求给定 I/O 操作的线程获取唯一的 32 位 ULONG 进程 ID。

    获得进程ID后,您可以在用户模式应用程序中检索进程信息,例如EXE名称、模块、执行路径和其他内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2017-01-13
      • 2017-08-30
      • 2013-01-04
      • 1970-01-01
      • 2017-05-24
      • 2021-09-08
      相关资源
      最近更新 更多