Holy cow, I wrote a book!
Hierarchical storage management is
one of the taxes
software developers have to pay.
What can you safely do to an offline file?
What will trigger its recall?
(First, a note on terminology:
Recalling a file means to restore it
from remote storage to local storage.
A file that has been recalled is online; a file that has been
placed on remote storage is offline.)
Merely opening the file will not recall it.
Therefore, you can still open the file and use the handle in functions like
GetFileSecurity without triggering a recall.
But if you read from or write to the file
(or map the file, which is the moral equivalent of reading and writing),
then the file will be recalled from storage.
What about the FILE_FLAG_OPEN_NO_RECALL flag?
This flag doesn't affect when the remote storage is accessed.
(It's still read/write/map.)
What it does is tell the hierarchical storage manager to leave
the file offline.
In other words, if you open an offline file with the
then when you read from the file, the file contents will
be read from tape directly and the file will remain in its offline state.
I'm told that the FILE_FLAG_OPEN_NO_RECALL flag is
intended for backup programs so that they can back up all your
files (even the offline ones) while still keeping them offline.
(Note: Do not confuse these types of offline files with
another feature also confusingly called offline files.
This is what happens when you let the Marketing department choose
the names of your features.)