다음을 통해 공유


IRP_MJ_CLEANUP

프로세스별 컨텍스트 정보를 유지하는 드라이버는 DispatchCleanup 루틴에서 정리 요청을 처리해야 합니다.

보낸 경우

이 요청을 수신하면 대상 디바이스 개체와 연결된 파일 개체의 마지막 핸들이 닫혔지만 미해결 I/O 요청으로 인해 해제되지 않았을 수 있습니다.

입력 매개 변수

None

출력 매개 변수

없음

작업

이 IRP는 파일 개체 핸들을 닫은 프로세스의 컨텍스트에서 전송됩니다. 따라서 드라이버는 드라이버가 이전에 잠기거나 매핑한 프로세스별 리소스(예: 사용자 메모리)를 해제해야 합니다.

단일 스레드만 한 번에 디바이스를 사용할 수 있도록 드라이버의 디바이스 개체가 배타적으로 설정된 경우 드라이버는 현재 대상 디바이스 개체에 큐에 대기 중인 모든 IRP를 완료하고 각 IRP의 I/O 상태 블록에 STATUS_CANCELLED 설정해야 합니다.

그렇지 않으면 드라이버가 해제되는 파일 개체 핸들과 연결된 현재 큐에 대기 중인 IRP만 취소하고 완료해야 합니다. 파일 개체에 대한 포인터는 드라이버의 IRP IO_STACK_LOCATIONFileObject 멤버에 있습니다. 이러한 대기 중인 IRP를 취소한 후 드라이버는 IRP 정리를 완료하고 I/O 상태 블록에 STATUS_SUCCESS 설정합니다.

이 요청을 처리하는 방법에 대한 자세한 내용은 DispatchCleanup 루틴을 참조하세요.

요구 사항

헤더

Wdm.h(Wdm.h, Ntddk.h 또는 Ntifs.h 포함)

추가 정보

DispatchCleanup

IO_STACK_LOCATION

IRP_MJ_CLOSE