Промучился весь день проект горит!  

 Нужно было сделать поток в драйвере взял пример из DDK написал простенький поток с таймером чтобы систему не вешал:
VOID ReadThreadProc(IN PVOID Context)
//
//Read thread proc
//
{
    PHW_DEVICE_EXTENSION DevExtension =  Context;
    NTSTATUS    Status;
   LARGE_INTEGER time;
    //Diagnostic
    DbgPrint("\nEnter to thread proc!\n");    
   //Set priorety
    KeSetPriorityThread(KeGetCurrentThread(), LOW_REALTIME_PRIORITY );
   //Set timer for delay
    KeInitializeTimer(&DevExtension->DelayTimer);    
    //main thread LOOP
    while( TRUE ){
   //Wait for timer
   DbgPrint("\nWait timer...\n");
    time.QuadPart = (LONGLONG) -100*1000*10;//1c
     KeSetTimer(&DevExtension->DelayTimer, time, NULL); 
    KeWaitForSingleObject(&DevExtension->DelayTimer,
                                 Executive,
                                 KernelMode,
                                 FALSE,             // Not allertable
                                 NULL);             // No timeout structure
    DbgPrint("\nTimer works!\n");
//      KeWaitForSingleObject(&DevExtension->IrpQueueSemaphore,
//                            Executive,
//                            KernelMode,
//                            FALSE,
//                            NULL );
   //If thread should stop
     if(DevExtension->ThreadShouldStop) {//You must free all thread's resources here!
      PsTerminateSystemThread( STATUS_SUCCESS );
       }//if(DevExtension->ThreadShouldStop)
    } // main thread LOOP
}
2 функции управления потоком:
void RunReadThread(IN PHW_DEVICE_EXTENSION  DriverExtention)
//
//Run reading thread.
//
{
NTSTATUS status;
HANDLE  ReadThreadHandle=0;//ReadThread handle
//OBJECT_ATTRIBUTES ObjAttributes;
   //Diagnostic
    DbgPrint("\nTry to create reading thread\n");
   //Run thread
    DriverExtention->ThreadShouldStop=FALSE;
//    InitializeObjectAttributes(&ObjAttributes, NULL,
//                                   OBJ_KERNEL_HANDLE,
 //                                  NULL,
 //                                  NULL);
    status = PsCreateSystemThread(&ReadThreadHandle,
                                (ACCESS_MASK)0,
                        NULL,            //&ObjAttributes,
                                (HANDLE) 0,
                                NULL,
                                ReadThreadProc,
                                DriverExtention );
   //Diagnostic
    if(status!=STATUS_SUCCESS)
     DbgPrint("\nReading thread not created!\n");
    else DbgPrint("\nReading thread created!\n");    
    // Convert the Thread object handle into a pointer to the Thread object
    // itself. Then close the handle.
    //    
    ObReferenceObjectByHandle(ReadThreadHandle,
                            THREAD_ALL_ACCESS,
                            NULL,
                            KernelMode,
                            &DriverExtention->ThreadObject,
                            NULL );
   ZwClose(ReadThreadHandle);
}
void StopReadThread(IN PHW_DEVICE_EXTENSION  DriverExtention)
//
//Stop reading thread.
//
{
   //Diagnostic
    DbgPrint("\nTry to stop thread\n");
   //Stop thread
    DriverExtention->ThreadShouldStop=TRUE;
    //
    // Wait for the thread to terminate
    //
    KeWaitForSingleObject(&DriverExtention->ThreadObject,
                        Executive,
                        KernelMode,
                        FALSE,
                        NULL );
    ObDereferenceObject(&DriverExtention->ThreadObject);
DbgPrint("\nReading thread stoped!\n");
}
Так вот поток запускается нормально и даже работает  

 но при любой попытке его остановить или вызвать  StopReadThread он просто без всяких сообщений и ошибок тупо перегружает компьютер... Перепробовал уже все на что только фантазии хватило не работает! 

PLEASE HEEEEEEEEELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
