Programming/윈도우 드라이버(14)
-
#pragma alloc_text(PAGE, XXX)
컴파일러에게 코드를 특정한 섹션에 두라고 지시하는 전통적인 방법은 alloc_text라는 pragma를 이용하는 것이다. 모든 컴파일러가 pragma를 다 지원하는 것은 아니기 때문에, DDK 헤더에서는 이 pragma의 지원여부를 알려주기 위해 ALLOC_PRAGMA 상수를 정의할 수도 있고 정의하지 않을 수도 있다.드라이버의 개별 서브루틴에서 아래와 같이 pragma를 호출해서 섹션의 위치를 지정한다[역주 주: pragma 이후에 오는 문장들은 C/C++ 표준 문법이 아니며 각 개별 컴파일러가 하드웨어나 O/S에 의존적인 부분의 차이를 위해 자체적으로 지원하는 기능이다.] #ifdef ALLOC_PRAGMA#pragma alloc_text(INIT, DeviceEntry)#endif 위처럼 INIT ..
2013.01.03 -
IRQL
Dispatching - 실행 중인 한 스레드에서 다른 스레드로 실행을 전환하는 절차 Scheduling - 프로세서에서 실행될 다음 스레드를 결정하는 절차 Quantum - 특정 스레드가 CPU에서 실행하도록 정해진 시간 Pre-emption(선점) - 현재 실행 중인 스레드의 우선 순위보다 더 높은 우선 순위를 가진 스레드가 실행할 준비가 되었을 때 IRQL - 운영체제는 스레드가 실행하고 있는 도중에 인터럽트가 발생하면 이를 처리한다. 우리는 이를 당연하다고 여기지만 사실은 스레드에 의한 코드 실행과 인터럽트 발생으로 인한 코드 실행에는 각각 해당 중요도가 있으며 운영체제는 이들 중요도에 근거하여 우선적인 작업을 먼저 처리한다. - 시스템에 존재하는 각 프로세서(CPU)는 자신만의 IRQL을 가진다..
2013.01.03