응용 프로그램 단에서 드라이버와 통신을 하게 되면 드라이퍼를 '파일'로써 인식하고 Win32API 를 사용하여 통신을 하게 됩니다.
Win32API의 CreateFile을 호출하게 되면 Dirver단에서 IRP_MJ_CREATE 명령어가 생성되어 드라이버에게 전달합니다.
또한 드라이버에서는 MRP_MJ_CREATE명령어를 처리하는 콜백 함수가 DEVICE_OBJECT에 등록되어 있어야 합니다.
I/O Manager로 [요청]IoCallDriver()함수를 이용하여 IRP를 드라이버에 전달IoCallDriver()함수를 이용해서 IRP를 밑의 드라이버 오브젝트에 전달IoCompleteRequest()를 호출해서 IRP의 처리가 끝이 났다고 I/O Manager에게 알려줌I/O Manager는 IRP를 파괴, 결과물을 응용 프로그램에게 알려줌PDO(Physica Device Object) - Bus Driver가 사용하는 Device Object.
pDO는 상위 디바이스 드라이버가 생성시켜 주는 pDO라서 직접 생성하는 것이 아니라 받아오는 방식입니다.
FDO(Function Device Object) - 기능을 담당하는 디바이스 오브젝트 AddDevice에서 IOCreateDevice()를 이용하여 FDO를 생성해 줍니다.
이 때 생성된 FDO를 이용하여 다른 모든 루틴에서 FDO를 이용하여 작업을 하게 됩니다.
FIDO(Filter Device Object) - PDO와 FDO 사이에 붙어서 IRP가 FDO까지 내려가지 않고 FIDO에서 작업을 처리 할 수 있게 할 수 있습니다. 상위 레벨 디바이스를 거쳐 하위 레벨 디바이스에 도달해 작업을 처리하지 않고 FIDO를 이용해 바로 처리하게 할 수 있습니다.(써보지 않음 부정확)
Page: 가상 메모리를 일정된 한 크기로 나눈 블록(가상 메모리의 최소 크기 단위)
Frame: 물리 메모리를 일정한 크기로 나눈 블록
시스템 공간의 가상 메모리 영역을 지칭하는 말
page out: 실제 메모리에서 제거되어 페이징 파일에 기록 될 내용
page in: 페이징 파일에서 실제 메모리로 올라 올 내용
실제 메모리에 상주하여 어느 IRQL 수준에서든지 페이지 폴트를 내지 않고 액세스 할 수 있다고 보장된 시스템 가상 주소
프레임과 매칭을 못 했을 경우에 발생
운영체제는 하드웨어 이벤트에 효과적으로 응답하기 위하여 인터럽트라는 매커니즘을 사용합니다.
하드웨어 이벤트 뿐만 아니라 소프트웨어의 인터럽트도 지원을 하며 인터럽트에 대한 우선순위는 IRQL로 관리합니다.
하위 level의 인터럽트를 처리하다가 더 상위의 인터럽트가 발생 시 상위 인터럽트부터 우선적으로 처리하게 됩니다.