在窗口中将收到的数据包传输到用户进程的 IRP 处理程序是什么?



我们知道windows内核是由IRP(I/O请求包)驱动的,

当我们请求一个网页(或其他任何东西)时,NIC收到一个IRP,这个IRP到底是什么?

请参阅Windows TCP/IP堆栈组件页面,以获取此类请求中涉及的组件列表。

NDIS驱动模型隐藏了被传递的IRP,并为组件提供了检查/转发/更改发送/接收请求内容的'回调'函数。

网卡驱动为NDIS框架,不接收来自协议驱动(Tcpip.sys)的irp;相反,它导出函数指针供协议驱动程序调用。

请参考MSDN初始化微端口驱动程序和NDIS驱动程序堆栈。

在XP/2 k3/2000 :IRPs发生在更高的网络层,采用TDI框架;即变频器。SYS向Tcpip.sys发送TDI IoControl。AFD是一个TDI客户端,通过向Tcpip.sys发送irp来实现Winsock。

在Vista和更高版本: TDI被弃用,如果我猜对了,AFD。SYS使用WinSock Kernel与Tcpip.sys通信。没有irp。

虽然TDI在Vista上是不赞成的,如果你安装了一个TDI客户端或过滤器,TDX。SYS将被加载并为您模拟TDI框架(也通过WinSock内核)。在这种情况下,我们仍然看到来自TDI-client -(TDI)-> TDX -(WSK)-> TCPIP的TDI irp。

最新更新