问题描述
我有 Windows NDIS FilterDriver,它的名字是 \\Device\\MyFilter
。
用户应用程序使用 FilterDriver 执行一些 DeviceIoControl 操作并调用以下代码打开设备句柄:
LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL;
DWORD CreationDistribution = OPEN_EXISTING;
DWORD FlagsAndAttributes = FILE_FLAG_OVERLAPPED;
DWORD DesiredAccess = GENERIC_READ | GENERIC_WRITE;
DWORD ShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
DWORD lastErr = 0;
m_hFilter = CreateFileA(MY_FILTER_NAME,/* "\\\\.\\\\MyFilter" */
DesiredAccess,ShareMode,lpSecurityAttributes,CreationDistribution,FlagsAndAttributes,NULL);
if (m_hFilter == INVALID_HANDLE_VALUE)
{
lastErr = GetLastError();
return false;
}
如果用户应用程序以“管理员身份”运行,则效果很好,否则(如果以普通用户身份运行)CreateFileA 返回 INVALID_HANDLE_VALUE,并且 lastErr = 5(拒绝访问)
返回“拒绝访问”的原因很清楚。 如何让用户的应用打开Filter Driver对象?
使用 IoRegisterDeviceInterface() 创建接口的想法看起来很有希望,但它需要指向 PDO 的指针,我不知道从哪里获取 NDIS 过滤器。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)