태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Device Driver Thread 사용 예제

Posted 2008/08/07 18:33


댓글 하나가 운영자에겐 커다란 힘이 됩니다!


간단하게  Thread 사용하는법 설명입니다  

주의 해야 될 점은  Thread라도 항상 PASSIVE_LEVEL이 아니라는 사실 (NT Server 이상  ~~ )


VOID ThreadProc (PDEVICE_EXTENSION pdx)
{
    LARGE_INTEGER    delay;
    delay.LowPart = (ULONG) -15000000;
    delay.HighPart = -1;
   
    while(1)
    {
         if  (KeGetCurrentIrql() == PASSIVE_LEVEL)
        {
            KdPrint(("ThreadProc"));
   
            KeDelayExecutionThread(KernelMode, FALSE, &delay );
        }
    }
}


DEVICE_EXTENSION       DevExt;
HANDLE                        hThread;

// Thread Create..   
ntStatus = PsCreateSystemThread(&hThread, THREAD_ALL_ACCESS, NULL, NULL, NULL,
                    (PKSTART_ROUTINE)ThreadProc, &DevExt);

if (!NT_SUCCESS(ntStatus))
    return ntStatus;

ObReferenceObjectByHandle(hThread, THREAD_ALL_ACCESS, NULL,
            KernelMode, (PVOID*) &DevExt.thread, NULL);

ZwClose(hThread);

출처 : http://www2.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=27&MAEULNo=11&no=76


위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

Write your message and submit
« PREV : 1 : ... 211 : 212 : 213 : 214 : 215 : 216 : 217 : 218 : 219 : ... 436 : NEXT »