IRP_MJ_CLOSE

모든 드라이버는 디스패치클라오스 루틴에서 닫힌 요청을 처리해야 하며, 시스템을 중단하지 않고는 디바이스를 사용하지 않도록 설정하거나 컴퓨터에서 제거할 수 없는 드라이버를 제외하면 됩니다. 디바이스에 시스템 페이지 파일이 있는 디스크 드라이버가 이러한 드라이버의 예입니다. 이러한 디바이스의 드라이버도 동적으로 언로드할 수 없습니다.

보낸 경우

이 요청을 수신하면 대상 디바이스 개체와 연결된 파일 개체의 마지막 핸들이 닫혀 해제되었음을 나타냅니다. 모든 미해결 I/O 요청이 완료되거나 취소되었습니다.

입력 매개 변수

None

출력 매개 변수

없음

작업

많은 디바이스 및 중간 드라이버는 IRP의 I/O 상태 블록에 STATUS_SUCCESS 설정하고 닫기 요청을 완료합니다. 그러나 지정된 드라이버가 닫기 요청을 수신할 때 수행하는 일은 드라이버의 디자인에 따라 달라집니다. 일반적으로 드라이버는 IRP_MJ_CREATE 요청을 수신할 때 수행하는 작업을 실행 취소해야 합니다. 직렬 드라이버와 같이 디바이스 개체가 배타적인 디바이스 드라이버는 닫기 요청을 받으면 하드웨어를 다시 설정할 수도 있습니다.

IRP_MJ_CLOSE 요청은 파일 개체 핸들을 닫은 프로세스의 컨텍스트에서 반드시 전송되지는 않습니다. 드라이버가 이전에 잠기거나 매핑한 사용자 메모리와 같은 프로세스별 리소스를 해제해야 하는 경우 IRP_MJ_CLEANUP 요청에 대한 응답으로 이 작업을 수행해야 합니다.

IRP_MJ_CLOSE 요청은 항상 PASSIVE_LEVEL 전송됩니다.

요구 사항

헤더

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

추가 정보

DispatchClose

IRP_MJ_CLEANUP

IRP_MJ_CREATE