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
Add Support routines for client objects. Will be used later. You might wonder why the code uses a lame hash table to link the client object handles to the user mode pointer, when it should be clear that a *client* object should have a user mode attribute, like other objects, that we can use, especially since that is the only real purpose of that object. Well, tell that the MS developer, who implemented client objects without a user mode attribute...
svn path=/trunk/; revision=65053
- Fail in NtGdiCreateClientObj, when the object type is not valid.
This is based on Windows behavior, only more strict. Windows allows to set the stock bit and reuse count, which is probably not what we want.
svn path=/trunk/; revision=65052
Bugfixing... Part 10/X:
- Properly compute entry name length in CompareFileName()
- Also, in CompareFileName() properly handle the return of RtlCompareUnicodeString(); this is not RtlEqualUnicodeString()!
- In NtfsLookupFileAt(), don't return an error when we're done walking the path, it's a normal behavior
All these fixes allow our NTFS to go one step farther: it can open directory/files (reading files data remains untested so far) in root and in its subdirs. Which was broken previously.
The said bugfixes in action (and in image): http://www.heisspiter.net/~Pierre/rostests/NTFS_listing_subdir.png
svn path=/trunk/; revision=65041
Implement vfatGrabFCB() (which was defined but never implemented) for increasing the reference count on a FCB.
This will make debugging easier.
Dedicated to Thomas :-).
svn path=/trunk/; revision=65031
Remove the old access check code in SepAccessCheckEx and use the new code instead. The new access check code is a lot better than the old code, but it makes the boot and install fail. This is caused by some kernel objects which are accessed using insufficient access rights. Therefore I added a little hack that shows a warning when insufficient rights are granted for an object and access is granted anyway.
svn path=/trunk/; revision=65023