PXA255
驱动牛犊
驱动牛犊
  • 注册日期2006-02-05
  • 最后登录2009-06-04
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:2111回复:2

PCI驱动IRQ里使用KeSetEvent死锁疑问

楼主#
更多 发布于:2009-05-25 01:07
开发一个PCI卡驱动程序,使用DriverStudio+DDK+VS2005@Windows XP

应用程序部分代码
m_Evt_Interrupt = CreateEvent(NULL, FALSE, FALSE, NULL);
                bStatus = DeviceIoControl(
                                hDevice,                // Handle to device
                                IOCTL_REGISTER_EVENT,        // IO Control code
                                &m_Evt_Interrupt ,              // Input Buffer to driver.
                                SIZEOF_REGISTER_EVENT,        // Length of input buffer in bytes.
                                NULL,                   // Output Buffer from driver.
                                0,                      // Length of output buffer in bytes.
                                &ulReturnedLength,      // Bytes placed in buffer.
                                NULL                    // synchronous call
                                );
AfxBeginThread((AFX_THREADPROC)Interrupt_thread,&m_Evt_Interrupt,0,0,0,0);
Interrupt_thread(LPVOID hEvent)
{
    HANDLE h = *(HANDLE*)hEvent;
    if (h == NULL)return 0;
    while(1)
    {
        WaitForSingleObject(h,INFINITE);
        AfxMessageBox("IRQ!",0,0);
    }
}

驱动中的部分代码
ObReferenceObjectByHandle (hEvent,
            SYNCHRONIZE,
            *ExEventObjectType,
            UserMode,
            &gpEventObject,
            NULL);
IsrDpc(PVOID Arg1, PVOID Arg2)
{
    if (gpEventObject  )
        KeSetEvent((PRKEVENT)gpEventObject,0,    FALSE);
}

问题是这样的:有的时候系统就是死锁,完全不响应,比如系统刚刚启动时执行应用程序,必然会死锁

如果用VS调试程序就不会(也不是绝对)

后来吧,我就发现把AfxMessageBox("IRQ!",0,0);换OutputDebugString("IRQ\n");就绝对不会出问题

这是为什么呢?

seanwan
驱动牛犊
驱动牛犊
  • 注册日期2007-08-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-06-20 22:14
试试把KeSetEvent从DPC中间拿出来,直接放到ISR里做。
tqijin
驱动小牛
驱动小牛
  • 注册日期2006-07-04
  • 最后登录2013-11-21
  • 粉丝3
  • 关注0
  • 积分31分
  • 威望1060点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-09-29 10:25
顶,我也正遇到
游客

返回顶部