IRP_MJ_QUERY_INFORMATION에 대한 호출은 Win32의 GetFileInformationByHandle 또는 커널 모드 ZwQueryInformationFile과 같은 함수에 의해 생성됩니다.IRP_MJ_QUERY_INFORMATION으로 인해 얼마나 많은 디스크 활동이 발생합니까?
누군가이 통화로 실제로 어떤 일이 일어 났는지 설명 할 수 있습니까? 내가 전통적인 7200RPM 자기 스토리지 HDD를 가지고 있다고 가정합니다.
자기 회전 드라이브에서 읽을 때 지연이 많이 발생한다는 것은 알고 있지만 IRP_MJ_QUERY_INFORMATION 호출은 응용 프로그램에서 매우 빠르게 보입니다. 프리 페치 캐시의 내용을 검사했는데 거기에서 쿼리하는 파일을 볼 수 없었습니다. 나는 전화가 수없이 많아서 메모리가 어딘가에 캐싱되고 있다고 생각하지만 매우 빨리 해결하고 많은 HDD 활동을 보지 못한다. 이러한 상황에서 실제로 어떤 일이 발생합니까? 파일이 Windows에서 다른 위치에 캐시되고 있습니까? 그렇다면 어떻게 볼 수 있습니까?
내가 아는 거기 HDD의 캐시가 너무하지만 내 이해가 더 읽기 위주 (read-aheads) 등의 버퍼와 같은 역할을한다
편집 : 나는 MSDN에 this 기사를 읽고 있었다 그것은 파일 시스템 메타 데이터는 "제안 항상 캐시 된. ", 나는 파일을 열고 수정할 때"최종 수정 날짜 "와 같은 메타 데이터가 파일 버퍼를 플러시 할 때까지 디스크에 커밋되지 않는다고 가정합니다. 필자의 경우에는 파일을 쿼리하므로 메타 데이터를 변경할 필요가 없습니다. 프로그램에서 만든 정보에 대한 첫 번째 쿼리 후 Windows에서 메타 데이터를 캐시합니까?
일부 프로그램에서는 말 그대로 IRP_MJ_QUERY_INFORMATION 호출을 수천 번 수행하므로 매우 유용합니다. (다른 말로하면 : 예) – Damon
예, 몇 가지 프로그램이 초당 이러한 수천 건의 호출을 수행하므로 어딘가에 캐시되어야합니다. 실제로 무대 뒤에서 실제로 일어나는 일에 대해 더 많은 정보를 알고 싶습니다. – Nathan