'Windows OS'에 해당되는 글 22건

  1. 2008.06.24 [Windows NT] 드라이버 언로드 에러 1061 (0x425)
  2. 2008.05.14 [Windows NT] KeEnterCriticalRegion 용도 6
Windows OS2008. 6. 24. 23:28
반응형
SCM(Service Control Manager)으로 드라이버를 언로드하다가 1061 (0x425) 오류코드를 얻는 경우가 종종 있는데 대표적인 원인 한가지를 정리한다.

1061 은 WinError.h 에 다음과 같이 정의되어 있다.
#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L
( 한글에러 문자열 : 서비스가 현재로서는 제어 메시지를 받아들일 수 없습니다. )
 
서비스 정지명령으로 분명히 드라이버를 언로드하라고 했는데 드라이버가 정지 명령을 수행할 수 없었다는 표시이다.

대부분 드라이버의 핸들을 열어놓고 닫지않은 상태에서 언로드 시도를 하는 경우에 이 오류가 발생한다.
드라이버의 핸들을 모두 닫아주고 다시 시도하면 잘 내려간다.

( 이런 삽질은 언제쯤 그만 할런지...  T_T )
반응형
Posted by GreeMate
Windows OS2008. 5. 14. 01:04
반응형
KeEnterCriticalRegion() 이 normal kernel APC 를 disable 한다는 설명만 있어서 정확히 뭐하는 녀석인지 잘 이해하지 못하고 있었는데 이번에 웹서핑하다가 우연히 알게 되었다. ^^

핵심은 Thread Suspend 를 normal kernal APC 로 하기 때문에 이것을 disable 하면 Thread Suspend 가 disable 된다는 것이다.

Thread Suspend 를 허용하고 싶지 않은 구간에 KeEnterCriticalRegion() 를 사용하면 되겠다.

다음 문서를 보면 다양한 동기화 객체에 대한 설명을 참고할 수 있다.

http://209.85.175.104/search?q=cache:PlG1pVwOT1QJ:download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/synch_table.doc+KeEnterCriticalRegion&hl=ko&ct=clnk&cd=5&gl=kr
반응형
Posted by GreeMate