我们知道Windows内核是由IRP(I / O请求包)驱动的,
当我们请求网页(或其他任何内容)时,NIC会收到IRP,那个IRP究竟是什么?
答案 0 :(得分:0)
请参阅Windows TCP/IP Stack Components页面,了解此类请求所涉及的组件列表。
NDIS驱动程序模型确实隐藏了传递的IRP,并为组件公开了“回调”函数,以检查/转发/更改发送/接收请求的内容。
答案 1 :(得分:0)
NIC驱动器是NDIS框架,它不从协议驱动程序(Tcpip.sys)接收IRP;相反,它导出协议驱动程序调用的函数指针。
请参阅MSDN Initializing a Miniport Driver和NDIS Driver Stack。
在XP / 2k3 / 2000 : IRP使用TDI框架在更高的网络层发生;即AFD.SYS将TDI IoControl发送到Tcpip.sys。 AFD是一个TDI客户端,它通过向Tcpip.sys发送IRP来实现Winsock。
在Vista及更高版本:不推荐使用TDI,如果我猜对了,AFD.SYS使用WinSock Kernel与Tcpip.sys进行通信。没有IRP。
虽然在Vista上不推荐使用TDI,但如果安装TDI客户端或过滤器,将加载TDX.SYS并为您模拟TDI框架(也可通过WinSock内核)。在这种情况下,我们仍然可以看到来自TDI-client的TDI IRP ---(TDI)---> TDX ---(WSK)---> TCPIP。