各位大神WINCE中断驱动有关问题

求助各位大神WINCE中断驱动问题
因为要用到一个中断,下降沿触发,所以自己尝试着写了一个中断驱动,运行起来没有什么问题,就是在关掉应用程序后再次打开应用程序后中断程序能进去,但是下降沿再也没有什么反应了:
初始化函数如下:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DWORD XPI_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
        RETAILMSG(1,(TEXT("************[XPI]: XPI_OPEN***********\r\n")));
        g_pGPIOReg = (volatile GPIO_REG*)DrvLib_MapIoSpace(BASE_REG_PA_GPIO, sizeof(GPIO_REG), FALSE);
        if (g_pGPIOReg == NULL) {
                RETAILMSG(TRUE, (TEXT("[XPI]:VirtualAlloc GPIO failed!\r\n")));
        }

        g_pGPIOReg->GPH0.GP_CON &= 0xfffffff0;
        g_pGPIOReg->GPH0.GP_CON |= 0x0000000F;//set the pin EXT_INIT[0]
        g_pGPIOReg->GPH0.GP_PUD &= 0xfffffffc;//         
        g_pGPIOReg->GPH0.GP_PUD |= 0x00000002;//pull-up enable
        g_pGPIOReg->EINTCON.EXT_INT0_CON &= 0xfffffff0;
        g_pGPIOReg->EINTCON.EXT_INT0_CON |= 0x00000002;//falling edge trigered
        g_pGPIOReg->EINTFLT.EXT_FLT0_CON._FLT_CON0 &= 0xffffff00;
        g_pGPIOReg->EINTFLT.EXT_FLT0_CON._FLT_CON0 |= 0x000000c0;//enable delay filter
        g_pGPIOReg->EINTMSK.EXT_INT0_MASK &= 0xffffffe;//enable interrupt
        g_pGPIOReg->EINTPND.EXT_INT0_PEND &= 0xffffffE;
        g_pGPIOReg->EINTPND.EXT_INT0_PEND |= 0x00000001;

        //
        m_interruptPhyId = IRQ_EINT0;
        if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &m_interruptPhyId, sizeof(DWORD), &m_interruptSysId, sizeof(DWORD), NULL))
        {
                RETAILMSG(1, (TEXT("*************kernelIoControl fail\r\n")));
                m_interruptSysId = SYSINTR_UNDEFINED;
                return FALSE;
        }

        m_interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
        if(INVALID_HANDLE_VALUE == m_interruptEvent)
        {
                RETAILMSG(1, (TEXT("[XPI]:Create m_interruptEvent fail\r\n")));
                return FALSE;
        }
        m_interruptThread=CreateThread(NULL, //Security
                0, //No Stack Size
                (LPTHREAD_START_ROUTINE)Threadproc,//Interrupt Thread
                NULL,        //No Parameters
                CREATE_SUSPENDED,        //Create Suspended
                lpThreadId);//Thread Id

        //set the thread priority

        threadpriority = 6;
        if( !CeSetThreadPriority( m_interruptThread, threadpriority))
        {
                RETAILMSG(1,(TEXT("test: Failed setting Thread Priority.\r\n")));
                return FALSE;
        }

        if (!InterruptInitialize(m_interruptSysId,m_interruptEvent,NULL,0))
        {
                ERRORMSG( 1, (TEXT("test interrupt is not initialized\n\r")));
                return(FALSE);