다음을 통해 공유


디바이스 개체 유효성 검사 실패

많은 드라이버가 IoCreateDevice를 호출하여 둘 이상의 디바이스 개체를 만듭니다. 일부 드라이버는 드라이버가 FDO를 만들기 전에 애플리케이션이 드라이버와 통신할 수 있도록 DriverEntry 루틴에서 제어 디바이스 개체를 만듭니다. 예를 들어 파일 시스템 드라이버는 IoRegisterFileSystem에 파일 시스템으로 등록할 때 파일 시스템 알림을 처리하는 디바이스 개체를 만듭니다.

드라이버는 만든 모든 디바이스 개체에 대한 요청을 IRP_MJ_CREATE 준비가 되어 있어야 합니다. 성공 상태 요청을 완료한 후 드라이버는 만든 파일 개체에 대해 사용자가 액세스할 수 있는 I/O 요청을 수신해야 합니다. 따라서 둘 이상의 디바이스 개체를 만드는 모든 드라이버는 각 I/O 요청이 지정하는 디바이스 개체를 검사 합니다.

예를 들어 드라이버가 DriverEntry에서 전체 제어 디바이스 개체를 만든 다음 AddDevice 루틴에 다른 디바이스 개체 집합을 만든다고 가정합니다. AddDevice 루틴이 하위 수준 드라이버에 대한 정보를 사용하여 디바이스 확장을 초기화하지만 제어 디바이스 개체에 이 정보가 포함되어 있지 않다고 가정합니다. 이 경우 모든 디스패치 루틴은 수신하는 각 디바이스 개체를 검사 주의해야 합니다. 그렇지 않으면 디바이스 확장 정보를 사용하려고 할 때 드라이버가 충돌할 수 있습니다.