It all depends on the file system involved and sort of information being retrieved. Let's talk about NTFS. :)
When a file is opened, much of the information contained in the directory entry and in the file record for the file is cached in a data structure (called a FCB) that is associated with the handle.
When IRP_MJ_QUERY_INFORMATION is called, this information is copied out from the FCB into the user's buffer. However things like retrieving reparse tags require going back to the original file record and reading that info out. Most of the time, that record is resident in the cache (since it's accessed when the file itself is opened).