使用驱动程序挂钩网络功能,高级概述?

时间:2011-10-26 20:04:27

标签: c windows kernel driver

我刚刚设法编写了我的第一个Windows驱动程序(尚未注册它 - 但我设法创建了这些东西!)。

我想知道是否有人能够高度概述我如何实现以下目标:

我想编写一个驱动程序,它会在计算机收到网络数据包时实现某些行为,在Windows执行它对数据包执行的操作之前,我想将此数据输出到控制台一个C或C ++程序。

让我们假设我编写了一个C / C ++程序,它有一个控制台。 C / C ++程序如何与我编写的驱动网络活动的驱动程序进行交互?它只是一些调用我的驱动程序的C代码,该函数将数据作为对象返回,然后我可以使用该对象在控制台中显示?

提前感谢您提出任何可能的回复

2 个答案:

答案 0 :(得分:1)

此任务不需要驱动程序。使用像PCap这样的数据包嗅探器库(实际上您需要WinPCap)。捕获数据包并将其打印到控制台非常简单。

替代方式是原始套接字。但桌面Windows(与Windows Server相反)限制了原始套接字功能。

答案 1 :(得分:0)

如果你真的想要一个驱动程序,或者要求在数据包到达Windows网络堆栈之前操作或过滤数据包,你需要查看过滤器驱动程序。

然后,此过滤器驱动程序可以公开您的用户空间应用程序可以读/写的设备文件。 Windows DDK包含示例。