On the road for getting rid of IopParseDevice() hack....
- Add support for FSCTL_LOCK_VOLUME, FSCTL_UNLOCK_VOLUME, FSCTL_DISMOUNT_VOLUME in VfatFileSystemControl()
- Implement VfatLockOrUnlockVolume(). This brings some kind of volume locking to FastFAT FSD. It's likely not fully accurate and welcome to race conditions. But, its main purpose is to be used in usetup. So, this is fine for now.
- Stubplement VfatDismountVolume(). This will be implemented later on, but should be relatively straightforward as it requires volume to be locked (so, we're the last ones on it :-)).
svn path=/trunk/; revision=65129
Actually enable again the hack...
For whatever reason, it works with my WC but not with clean trunk...
Where are the you, magic and silent patch that fixes it? :-(
svn path=/trunk/; revision=65120
Finally, disable again the IopParseDevice hack.
Just for the record, opening a volume with FILE_READ_EA or FILE_READ_DATA is legal and works in Windows (NTFS Info for instance opens it with GENERIC_READ).
Let's hope we can rid of this hack forever now... It's been with us since 2006!
svn path=/trunk/; revision=65119
Don't over-reference our FCB in case of volume opening (vfatAttachFCBToFileObject() already references it).
This fixes 1st stage and beyond with IopParseDevice hack off
svn path=/trunk/; revision=65118
Now that we start to honor the storage stack (ie, without the IopParseDevice hack ;-)), we have to let FSDs forward device IOCTLs.
This allows back copying files on 1st stage
svn path=/trunk/; revision=65116
Don't attempt to mount any partition just because we have a valid partition table...
Restrict this to them being marked as FAT or compatible.
svn path=/trunk/; revision=65115
Implement support for the FSCTL_GET_NTFS_VOLUME_DATA user request in NtfsUserFsRequest().
This makes NTFSInfo capable of working in ReactOS :-). A picture to show it: http://www.heisspiter.net/~Pierre/rostests/NTFS_info.png
Yes, NTFS Zone isn't computed yet. I'll have a look at it later on.
This doesn't fix nfi.exe though. If it can get its data, it cannot continue. It loops forever on a FSCTL we don't handle yet.
CORE-8725
svn path=/trunk/; revision=65112
Finally, move old stuff back from disk.sys to ntfs.sys now it can be properly reached on volume opening:
- Halfplement NtfsUserFsRequest() and add support for IRP_MN_USER_FS_REQUEST in NtfsFsdFileSystemControl()
- Also, use the proper FSCTL code: FSCTL_GET_NTFS_VOLUME_DATA which exists and is documented instead of FSCTL_GET_NTFS_VOLUME_DATA. Spotted by Christoph.
CORE-8725
svn path=/trunk/; revision=65106
Revert r65097 and r65090.
Thanks to r65104, now the FSCTLs go to the right place: the FSDs!
Thanks to Thomas for pointing out that NTFSinfo was really talking with the FSD on Windows and not to disk.sys
CORE-8725
svn path=/trunk/; revision=65105
Disable the IopParseDevice hack. It appears it was triggered on volume opening and thus was breaking volume opening which were then forwarded down to disk.sys.
Not sure how legit it is to have it anylonger.
At least, disabling it reenables volume opening in ReactOS and associated FSCTL!
Alex & Aleksey, can you review please?
CORE-8725
svn path=/trunk/; revision=65104
- add metrics to classic themes (the flag 0xb0001 will result in a kinda esoteric value of type REG_QWORD)
- fixes switching from Lautus back to a classic theme
CORE-8718
svn path=/trunk/; revision=65100
Actually, sysinternals used to release the source code of NTFSInfo (thanks Christoph!), so we know a bit more about the interface of the user FS request.
So, implement a bit more of the interface to validate it properly works (and so far, it does!)
CORE-8725
svn path=/trunk/; revision=65097
Get ready to enter into the 10th dimension... So:
- Implement support for IRP_MJ_FILE_SYSTEM_CONTROL. Yes... You read well! So, implemented a ScsiDiskFileSystemControl() function. The way it is added to the DriverObject is a big hack, class2 is not supposed to have such requests, so, we do it in its back. Fear!
- Stubplement the NtfsRussinovichism() function. This is the only function we're supposed to call with IRP MJ FSCTRL and with IRP MN USRFSRQST. Its purpose (when its implemented) is to reply back to the M. Russinovich tools (NFI & NTFSInfo) so that they can directly dump NTFS information without going into NTFS driver. They kind of bypass it.
We do all agree this is a ugly hack. But it exists in Windows, as these tools work in Windows. And it would be useful they actually work in ReactOS.
Soon, we'll be able to publish a book "ReactOS Internals" where we speak about undocumented FS controls to dump NTFS information to show how well our NTFS works ;-).
svn path=/trunk/; revision=65090
- addendum to revision 64877 which slightly changed UserDrawCaption's logic
- fixes window title being drawn over the icon
svn path=/trunk/; revision=65087
- Move functions to the appropriate source files, zap hacks.c, stubs.c, stubsa.c and stubsw.c (sorry for the noise, but this mess had to be cleaned up)
svn path=/trunk/; revision=65086
For now, disable the VfatSetRenameInformation() asserts in trunk.
They can be reenabled for testing by commenting "#define NASSERTS_RENAME" out.
CORE-8721 #resolve #comment Fixed with r65085
svn path=/trunk/; revision=65085
Finally, implement NtfsGetFreeClusters() which will just read the $Data stream from $BITMAP file record to get the amount of free clusters to allow estimating the free space on a volume.
The implementation is likely under-optimized... But wwell, the rest of the FSD is not better. Who talked about caching?! ;-)
Because pictures are more relevant than words in such case: http://www.heisspiter.net/~Pierre/rostests/NTFS_disksize.png
svn path=/trunk/; revision=65082
[user32]
- Properly notify the theme engine that the caption needs to be repainted on WM_SETICON
- Fixes a classic frame appearing when themes are enabled and we navigate to a different folder
svn path=/trunk/; revision=65077
- Stop the log from being spammed when the session is idle and no screensaver is set
- Also checking if my login still works :)
svn path=/trunk/; revision=65076
- Use GdiGetDcAttr instead of GdiGetHandleUserData where appropriate
- Add a few missing SetLastError()
- Fix return failure return value of GetBkColor()
- Improve order of operations in SelectObject (needs more fixing)
svn path=/trunk/; revision=65063
Get rid of Fast486Interrupt, since it's not used anywhere. Also we can now remove
workarounds for all of the bugs that it caused.
Implement the "single-instruction interrupt delay" for instructions that load the
stack segment only.
svn path=/trunk/; revision=65061