windows driver pnp 매니저

wangki·2026년 3월 29일

windows driver

목록 보기
4/10

Windows PnP 드라이버 아키텍처의 흐름을 이해하기 위해서 작성한다.


버스 드라이버가 하드웨어 장치 발견


pci.sys같은 드라이버가 하드웨어 장치를 발견하면 PDO를 생성해주고 Hardware ID를 할당해준다.

INF 파일과 하드웨어 ID 매칭


INF 파일에서 Hardware ID를 매칭해 드라이버를 선택하여 실행해 준다.

DriverEntry 실행


DriverEntry에서 AddDevice 콜백 등록, 필요한 Dispatch Routine 등록을 해준다. 특히 Unload와 AddDevice는 리소스 해제를 위해 꼭 추가해 주어야 한다.

DeviceObject 생성 및 Attach


AddDevice 콜백 내부에서 Device Object 생성해 준다. 이때 Device Extension도 할당해 주어야 한다. 유저 모드 어플리케이션에서 Device에 접근하기 위해 심볼릭 링크도 생성해 준다. 매개변수로 받는 PDO 위에 Attach 해주면 된다.

IRP_MN_START_DEVICE 후처리에서 하드웨어 리소스 획득


AddDevice가 완료된 후, PnP Manager가 I/O Manger를 통해서 IRP를 드라이버로 보내주게 되는데 IRP_MJ_PNP 하위의 IRP_MN_START_DEVICE를 받게 된다. 후처리를 통해서 필요한 하드웨어 리소스를 획득하여 Device Extension에 저장하면 나중에 사용할 수 있다. 얻어온 하드웨어의 베이스 물리 주소는 MmMapIoSpace을 통해 가상 주소로 변경하여 사용해야 한다.

결론


Windows Driver를 공부하고 있는데 완벽하게 이해가 가지는 않지만 흐름을 잡기 위해서 위 내용을 작성했다. PCIe 장치가 PnP 메커니즘으로 os에 하드웨어로 인식되는 방법에 대해서 간단히 알아보았다.

0개의 댓글