|
|
Hello,
I have a system with 3 NTFS partitions that all have drive letters (C:, D:, F:). I also have set up a few mount points on one of them (on F:). Whenever I open a file inside such a mount point (with the VC function _open(), which uses the Win32 API CreateFile), the system returns a handle for the file in question, but it also creates handles to the reparse streams \$Extend\$Reparse on all three drives.
The strange thing is that it closes only the reparse stream handle of the drive that contains the mounting point for the file I'm opening (F: in my case). The stream handles for the other two drives (C: and D:) remain open. After opening 1000 files in mount points on F:, my application has 2000 such handles open (pointing to either C:\$Extend\$Reparse or D:\$Extend\$Reparse) -- and I can't close them, because I never received their handle values.
The same happens apparently with the MMC disk management snap-in. Sysinternal's file monitor shows that it accumulates many such reparse stream handles, which all are closed when it exits. The same happens with my application: they are automatically closed on exit. However, them being closed on exit is not good enough for me... the app needs to be able to run for a long time and open and close many files while up.
Does anybody know what's going on here? How to either avoid that these reparse streams stay open, or how to close them without exiting the application?
Thanks, Gerhard
|
|
|