驱动与应用程序同步的方法
我想要希望大牛们帮我一下,用事件应该要如何通信,协调呢,我的程序代码有什么问题呢?
case IOCTL_DROP_PACKET: //packet report
{
uTransLen = sizeof(DROPPACKET);
if(uOutSize < uTransLen)
{
status = STATUS_BUFFER_TOO_SMALL;
break;
}
RtlInitUnicodeString(&uEventName,wEventNameBuf);
pEvent = IoCreateSynchronizationEvent(&uEventName,&pFilterContext->Packet->hEvent);
status=ObReferenceObjectByHandle(&pFilterContext->Packet->hEvent,EVENT_ALL_ACCESS,*ExEventObjectType,KernelMode,(PVOID *)&gKeventObject,NULL);
if (gKeventObject)
{
KeClearEvent(gKeventObject);
}
if (pEvent)
{
KeResetEvent(pEvent);
}
else
return STATUS_BUFFER_TOO_SMALL;
NdisMoveMemory(pIoBuffer, &pFilterContext->Packet, uTransLen);
KeSetEvent(&pEvent,0,TRUE);
KeResetEvent(&pEvent);
status = STATUS_SUCCESS;
}
break;