【发布时间】:2012-12-13 20:09:49
【问题描述】:
我需要内核模式 WFP 驱动程序和用户模式应用程序之间的双向通信。驱动程序通过将 URL 传递给应用程序来启动通信,然后应用程序对该 URL 进行分类(娱乐、新闻、成人等)并将该类别传递回驱动程序。驱动程序需要知道过滤功能中的类别,因为它可能会根据该信息阻止某些网页。我在应用程序中有一个线程正在发出 I/O 请求,驱动程序将使用 URL 和 GUID 完成,然后应用程序会将类别写入该 GUID 下的注册表中,驱动程序将在其中提取它。不幸的是,正如驱动程序验证者所指出的那样,这是不稳定的,因为 Zw 注册表函数必须在 PASSIVE_LEVEL 运行。我正在考虑用映射的内存缓冲区尝试同样的事情,但我不确定中断要求是什么。另外,我想在注册表函数调用之前降低中断级别,但我不知道这样做的副作用是什么。
【问题讨论】:
-
您已经在使用从驱动程序到应用程序的常规 I/O 来传递 URL;为什么不使用传统的 I/O 来返回结果呢?
-
由于请求是从驱动程序发起的,我不知道如何使它工作。应用程序发出 I/O 请求,驱动程序使用输出缓冲区中的 URL 完成它,那么应用程序如何在 I/O 请求完成后将信息返回给驱动程序?此外,该操作具有时间敏感性,因为我正在决定是否阻止网页。
标签: windows driver interrupt wfp windows-kernel