我目前正在开发一个项目,该项目需要在 IE 中挂钩 TCP send 和 recv API 以监控 TCP 数据。它在 IE9 和 IE10 上运行良好。但它停止在 IE11 上工作。经过一番研究,我发现 IE11 使用 WSASend 和 WSARecv 来发送和接收数据。所以我决定挂钩 WSASend 和 WSARecv。
WSARecv 是一个重叠操作。有 3 种方法可以获得重叠操作的结果。当使用重叠操作时,它们要么具有关联的事件、完成例程,要么与 I/O 完成端口关联。我在IE11调用WSARec时检查了重叠结构,发现事件和完成例程都是NULL,所以我假设IE11使用IO完成端口来获取重叠操作的结果。
问题是 IE11 永远不会调用 GetQueuedCompletionStatus 或 GetQueuedCompletionStatusEx。我使用 API 监视器或直接挂钩这两个函数,从来没有看到这两个函数被调用。我不知道 IE11 是否使用不同的 API 集来获取 WSARec 的结果。我想知道是否有人遇到过类似的问题。我应该挂钩哪个 API?如果有替代方法可以实现相同的目标。基本上我想做的是在 IE11 中监控 TCP 数据。