1) usermode 프로세스는 사용자 모드 가상 주소를 고유 한 물리적 페이지 프레임 모음으로 매핑하는 자체 "주소 컨텍스트"를 가지고 있습니다. 즉, 특정 가상 주소의 의미은 Windows XP 스케줄러가 스레드를 전환 할 때마다 잠깐 바뀝니다.Windows 커널 모드 드라이버는 어떻게 페이징 된 메모리에 액세스합니까?
"스레드 전환"작업 중 일부는 들어오는 스레드의 프로세스 컨텍스트를 참조하도록 페이지 테이블을 변경하는 것입니다.
_
2) 윈도우 커널 모드 드라이버 "는 임의의 스레드 컨텍스트"에서 실행한다.
드라이버가 시스템 스레드를 생성하여 컨텍스트에서 작동 할 수 있지만 시스템 스레드를 생성하지 않는 상황에 대해 이야기하고 있습니다.
드라이버는 "ExAllocatePoolWithTag"를 사용하여 페이지 된 (휘발성 저장소에있는 메모리) 할당 할 수 있습니다.
_
3) 어떻게 않는 상황없이 드라이버 액세스 페이징 메모리 ?
포인트 1에서 볼 수 있듯이 페이지 된 mem은 "컨텍스트 고유"인 페이지 테이블을 통해 액세스됩니다.
드라이버가 다른 스레드 컨텍스트에서 실행될 때 ... 페이지 테이블 항목은 스레드 관련 phy를 가리 킵니다. mem, 어떻게하면 드라이버가 페이징 메모리에 액세스 할 수 있습니까?
추신 : 커널 프로그래밍에서의 noob. 화 내지 마.
예 답변입니다 .. – bakra