DriverEntry는 직렬화가 될까?

@codemaru · July 12, 2009 · 1 min read

DllMain은 로더 락에 의해서 실행이 직렬화 됩니다. 즉, 서로 다른 두 Dll의 DllMain 루틴이 동시에 호출되는 일은 없습니다. 해당 사실이 드라이버에도 동일하게 적용됩니다. DriverEntry 루틴은 워크 아이템(Work Item)에 의해서 호출됩니다. 워크 아이템은 실질적으로는 단일 시스템 스레드가 FCFS(first come, first service) 방식으로 작업들을 순차적으로 처리해 주는 구조이기 때문에 직렬화가 자동적으로 이루어 집니다.

즉, 한 드라이버가 DriverEntry에서 무한 펜딩을 시키면 다른 드라이버는 로딩될 수 없습니다. 물론 다른 워크 아이템도 수행될 수 없겠죠.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중