我有点困惑,因为我已经读过IRQL_PASSIVE应该可以“一切”,但我不确定这是否包括winsock2或其他用户态库。我的正常理解是使用WSK接口。但如果我可以使用普通的插座,它会更舒服。
由于我在尝试包含winsock时遇到了很多构建器错误,所以我有点不确定。由于搜索文档没有提供权威性答案,我想将其作为一个问题说明:我可以在IRQL_PASSIVE上真正访问哪些类型的库? IRQL是唯一的限制参数吗?
答案 0 :(得分:2)
您无法从内核模式访问(大多数)用户区域库。您可以获得该库的内核模式接口,或者您必须使用用户模式服务(反向调用)。
Winsock有一个内核接口,请参阅MSDN article。
IRQL级别确定您可以使用哪些“内核服务”。因此,对于KeGetCurrentIrql()> = IRQL_DISPATCH,您不能依赖于分页(这会产生IRQL_NOT_LESS_OR_EQUAL错误检查)并且不能(不应该?)调用使用分页的函数。
它不会阻止库的使用。