zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:5030回复:1

关于DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS

楼主#
更多 发布于:2005-07-05 11:33
  我在驱动中创建线程并在DriverUnload 里释放。 但是驱动停止时会产生异常DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
而以前经常这个做也没发现这种错误。不知道为什么?
VOID BusEnumWorker(PVOID pContext)
{
       while(!m_EnumBreak)
       {
              LARGE_INTEGER duetime;
              duetime.QuadPart=-5000000;
              KeDelayExecutionThread(KernelMode,FALSE,&duetime);
                }
       KeSetEvent(&m_EnumFinish,IO_NO_INCREMENT,FALSE);
       PsTerminateSystemThread(STATUS_SUCCESS);
}
void DriverUnload(PDRIVER_OBJECT pDriver)
{
       KeInitializeEvent(&m_EnumFinish,NotificationEvent,FALSE);
       m_EnumBreak=TRUE;
       KeWaitForSingleObject(&m_EnumFinish,Executive,KernelMode,FALSE,NULL);
       ZwClose(m_hEnumThread);
 }
---内核开发合作或提供基础技术服务QQ:22863668 ---
zhouvirgo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2011-01-17
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望35点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-06-26 14:44
you must wait until the thread exit.like that:
KeWaitFor..(m_thread, ......);
游客

返回顶部