'SystemThread'에 해당되는 글 1건

  1. 2009.04.04 [DDK] - Kernel Mode에서 Thread 사용하기...

무슨 프로그램을 만들던지 Thread는 아주 유용한 도구(?)가 될 수 있다.
WIN32/MFC에서는 CreateThread함수 하나만 알아도 Thread를 생성해서 사용하는 큰 지장이 없다. bool값만 적절히 조정해 주면 Thread종료에도 큰 문제가 없다.

하지만 Kernel에서 Thread를 생성하고, 종료 시키는데는 약간의 유의가 필요한듯 하다.
계속 되는 삽질과 블루스크린과의 조우로 깨달았다... 어리석게도...
<Thread 생성>

<Thread 종료>

<Thread Routine>

Thread의 생성에는 크게 문제가 없는데 Thread를 종료 시킬 때.. PsTerminateThread함수를 Thread Routine 내에서 호출해 줘야 한다. 그리고 ObDereferenceObject함수를 호출하여 Thread참조 카운트를 줄여주기 전에 KeWaitForSingleObject를 이용하여 Thread의 종료를 확인 해줘야 한다.

P.S. Thread Object는 Thread가 완전히 종료(terminated)되었을 때 Signaled 상태가 되고 스레드가 실행중인 때에는 Non-Signaled 상태이다.
Posted by hazeyun

댓글을 달아 주세요