반응형
DeviceObject 삭제
1. Driver 서비스 시작 시(StartService호출) ERROR_FILE_NOT_FOUND(0x2)가 발생하는 경우
** 드라이버 서비스 생성시 드라이버 파일 경로를 잘못 설정한 경우는 논외로 함
(1) 현상
1) 재 부팅 후 1회에 한해 StartService 호출이 성공함
2) 서비스 중지 후 다시 서비스를 실행할 경우, ERROR_FILE_NOT_FOUND 에러가 발생함
(2) 원인
1) IoCreateDevice를 통해 생성한 DeviceObject를 드라이버 Unload시 삭제하지 않은 경우 발생한다.
(3) 결론
1) IoCreateDevice를 통해 생성한 DeviceObject는 드라이버 Unload 시점에서 IoDeleteDevice를 호출하여 반드시 삭제 해야함
① WDM Driver
u DriverObject->MajorFunction[IRP_MJ_PNP]에 등록한 함수에서 IRP_MN_REMOVE_DEVICE Irp를 받았을 때 삭제
② Nt Driver
u DriverObject->DriverUnload에 등록한 함수에서 삭제
u DeviceObject삭제를 위해, DriverEntry에서 해당 포인터를 저장해 놓아야 한다??
반응형
'Windows Programming > 드라이버' 카테고리의 다른 글
WDK는 VC6.0에서 빌드되지 않는다. (0) | 2008.07.24 |
---|---|
Filter-Hook Driver (0) | 2008.07.21 |
Network Driver의 종류 (0) | 2008.07.21 |
데이타 버퍼 어드레싱 (0) | 2008.06.11 |
Device Object naming (0) | 2008.05.30 |