参看DDK下的ndisprot例子时候,有这样一段控制代码:
说等待一个全局事件。这个全局变量会在绑定完成 的时候被设置。请问这个全局事件是在哪里设置的?
case IOCTL_NDISPROT_BIND_WAIT:
if (NPROT_WAIT_EVENT(&Globals.BindsComplete, 5000))
{
NtStatus = STATUS_SUCCESS;
}
else
{
NtStatus = STATUS_TIMEOUT;
}
DEBUGP(DL_INFO, ("IoControl: BindWait returning %x\n", NtStatus));
break;
按照我对人家讲解的理解,应该是在这个函数的末尾,而在这个函数末尾也确实设置了一个事件,但是却不是那个全局事件??
而且在调试发现,上面等待的全局事件和这里没什么关系。我在这做了个打印,发现没有打印到这,上面的全局事件就已经拿到了!!!很疑惑啊????谁能讲讲。
VOID
NdisProtOpenAdapterComplete(
IN NDIS_HANDLE ProtocolBindingContext,
IN NDIS_STATUS Status,
IN NDIS_STATUS OpenErrorCode
)
{
PNDISPROT_OPEN_CONTEXT pOpenContext;
UNREFERENCED_PARAMETER(OpenErrorCode);
pOpenContext = (PNDISPROT_OPEN_CONTEXT)ProtocolBindingContext;
NPROT_STRUCT_ASSERT(pOpenContext, oc);
pOpenContext->BindStatus = Status;
NPROT_SIGNAL_EVENT(&pOpenContext->BindEvent);
}