能力值:
( LV9,RANK:280 )
2 楼
[in, out] lpOverlapped Pointer to an OVERLAPPED structure. This parameter is optional and can be NULL. If it is not NULL, the caller must initialize the hEvent member of the OVERLAPPED structure to a valid event handle or NULL. 有异步的iocp你不用然后怪api阻塞?
能力值:
( LV2,RANK:10 )
3 楼
hzqst
[in, out] lpOverlapped
Pointer to an OVERLAPPED structure. This parameter is optional and can be ...
我的意思是驱动发了消息,api还是阻塞。现在经过我反复观察,发现似乎与另一个线程有关系。另一个线程是这样设计的,循环体中检查配置文件,如果配置文件被修改了,就把配置发送给驱动。可是又似乎不可能有影响,因为配置文件并没有变动啊,就算可能有什么竞争关系,也没法实际形成啊。
另一个线程的函数是这样的:
unsigned __stdcall ThreadFunc(void* pArguments)
{
ULARGE_INTEGER modtime1;
if (!GetPolicyModifyTime(modtime1))
return 0;
while (1)
{
Sleep(3000);//过一小时检查一下
//重新获取策略文件的修改时间
ULARGE_INTEGER modtime2;
if (!GetPolicyModifyTime(modtime2))
continue;
//如果修改时间变新了吗就重新发送策略
if (modtime2.QuadPart > modtime1.QuadPart)
{
SendPolicy();//这里边用到了FilterSendMessage函数
modtime1 = modtime2;
}
}
return 0;
}
话说这个异步的怎么用
能力值:
( LV13,RANK:385 )
4 楼
参考Minifilter下的例子 scanner。他就用了异步。 直接把user代码抄了用就行。 还有驱动发送数据给ring3其实会带有一个消息头(里面有ID) 然后 发送回复数据的时候要带着回复头。 直接抄 user代码就行。
能力值:
( LV2,RANK:10 )
5 楼
TkBinary
参考Minifilter下的例子 scanner。他就用了异步。 直接把user代码抄了用就行。 还有驱动发送数据给ring3其实会带有一个消息头(里面有ID) 然后 发送回复数据的时候要带着回复头。 ...
好 谢谢您还有楼上的,我正在看那个例子。 不过我不想reply,似乎也可以吧。我看api说明里,FltSendMessage函数是可以不接收Reply的。不接收也就不需要Reply了吧
能力值:
( LV13,RANK:385 )
6 楼
可以不要reply的。看你自己需求。 带着reply只是告诉内核。哪个fltsendmessage要响应了。它的完成端口可以抄。很好的例子。