22 months ago[BOOTDATA] Start menu, shortcuts: port r61988 to LiveCD from BootCD. CORE-13994 119/head
Serge Gautherie [Sat, 11 Nov 2017 03:42:48 +0000 (04:42 +0100)]
[BOOTDATA] Start menu, shortcuts: port r61988 to LiveCD from BootCD. CORE-13994

- Move Accessibility, Entertainment and System Tools folders into Accessories.
- Move mstsc.exe shortcut into new Accessories/Communications folder.
- Rename Remote desktop to Remote Desktop Connection.
- Rename Regedit to Registry Editor.
- Plus: Sort touched lines in the list.

22 months ago[TRANSLATION] Start menu, shortcuts, r61988: update untranslated strings too. CORE... 120/head
Serge Gautherie [Sat, 11 Nov 2017 03:42:48 +0000 (04:42 +0100)]
[TRANSLATION] Start menu, shortcuts, r61988: update untranslated strings too. CORE-13994

ToDo: Translators should check already translated strings too.

22 months ago[NTOS:KD] Pass PreviousMode down to KdpPrintString, since ExGetPreviousMode is not... 188/head
Thomas Faber [Thu, 14 Dec 2017 10:43:57 +0000 (11:43 +0100)]
[NTOS:KD] Pass PreviousMode down to KdpPrintString, since ExGetPreviousMode is not accurate. CORE-14103

22 months ago[NTOS:KD] Avoid _alloca inside SEH, as it's apparently incompatible with PSEH. CORE...
Thomas Faber [Tue, 12 Dec 2017 11:44:44 +0000 (12:44 +0100)]
[NTOS:KD] Avoid _alloca inside SEH, as it's apparently incompatible with PSEH. CORE-14103

22 months ago[NTOS:KD] Don't assume null termination in KdpSerialDebugPrint and KdpScreenPrint...
Thomas Faber [Tue, 12 Dec 2017 11:38:45 +0000 (12:38 +0100)]
[NTOS:KD] Don't assume null termination in KdpSerialDebugPrint and KdpScreenPrint. CORE-14057 CORE-14103

22 months ago[SYSDM] Extend build string to fit commit hash
Stanislav Motylkov [Wed, 13 Dec 2017 09:50:22 +0000 (12:50 +0300)]
[SYSDM] Extend build string to fit commit hash

22 months ago[ASM][NDK][NTOS] Rename Self to SelfPcr in the KIPCR structure.
Amine Khaldi [Tue, 12 Dec 2017 11:50:58 +0000 (12:50 +0100)]
[ASM][NDK][NTOS] Rename Self to SelfPcr in the KIPCR structure.

22 months ago[KERNEL32_APITEST] Add a PCH.
Amine Khaldi [Wed, 13 Dec 2017 12:48:26 +0000 (13:48 +0100)]

22 months ago[COM_APITEST] Improve the existing PCH and make use of it.
Amine Khaldi [Tue, 12 Dec 2017 12:01:03 +0000 (13:01 +0100)]
[COM_APITEST] Improve the existing PCH and make use of it.

22 months ago[ADVAPI32_APITEST] Add a PCH.
Amine Khaldi [Tue, 12 Dec 2017 11:44:32 +0000 (12:44 +0100)]

22 months ago[NTOS] Add some header guards.
Amine Khaldi [Tue, 12 Dec 2017 11:42:13 +0000 (12:42 +0100)]
[NTOS] Add some header guards.

22 months ago[TRANSLATION] Fix Simplified Chinese Translations (#187)
Li Keqing [Mon, 11 Dec 2017 09:35:59 +0000 (17:35 +0800)]
[TRANSLATION] Fix Simplified Chinese Translations (#187)

* Fix the Simplified Translation of Rapps
* Fix the Simplified Translation of msconfig_new
* Fix the Simplified Translation of charmap_new
* Fix the Simplified Translation of winmine
* Fix the Simplified Translation of kbswitch
* Fix Simplified Chinese Translation of logoff
* Fix Simplified Chinese Translation of eventvwr
* Fix Simplified Chinese Translation of sysdm
* Update Simplified Chinese Translation for dxdiag

22 months ago[VCDCLI] Fix typo
Pierre Schweitzer [Sun, 10 Dec 2017 22:42:25 +0000 (23:42 +0100)]
[VCDCLI] Fix typo

22 months ago[KERNEL32] Update some console API prototypes.
Hermès Bélusca-Maïto [Sun, 10 Dec 2017 16:04:29 +0000 (17:04 +0100)]
[KERNEL32] Update some console API prototypes.

22 months ago[NTOS:KD] Protect against invalid user arguments for BREAKPOINT_LOAD_SYMBOLS. CORE... 160/head
Thomas Faber [Fri, 8 Dec 2017 13:45:26 +0000 (14:45 +0100)]
[NTOS:KD] Protect against invalid user arguments for BREAKPOINT_LOAD_SYMBOLS. CORE-14057

22 months ago[NTOS:KD] Protect against invalid user arguments in KdpPrintString. CORE-14057
Thomas Faber [Fri, 8 Dec 2017 13:41:41 +0000 (14:41 +0100)]
[NTOS:KD] Protect against invalid user arguments in KdpPrintString. CORE-14057

22 months ago[NTOS:KD] Protect against invalid user arguments in KdpPrompt. CORE-14057
Thomas Faber [Fri, 8 Dec 2017 13:39:31 +0000 (14:39 +0100)]
[NTOS:KD] Protect against invalid user arguments in KdpPrompt. CORE-14057

22 months ago[SERVMAN] fix status-bar text truncation, update german localization CORE-14092
Joachim Henze [Sun, 10 Dec 2017 13:08:29 +0000 (14:08 +0100)]
[SERVMAN] fix status-bar text truncation, update german localization CORE-14092

22 months agoMerge branch 'ntfs_rebase' 186/head
Thomas Faber [Sun, 10 Dec 2017 11:46:33 +0000 (12:46 +0100)]
Merge branch 'ntfs_rebase'

22 months ago[PRINTING] Fix GetPrinterW, add tests for it and GetDefaultPrinterA/W, and add a...
Colin Finck [Sun, 10 Dec 2017 11:28:08 +0000 (12:28 +0100)]
[PRINTING] Fix GetPrinterW, add tests for it and GetDefaultPrinterA/W, and add a proper stub for GetPrinterDriverDirectoryA.

* Pass the correct handle to _RpcGetPrinter in GetPrinterW.
* Pass an empty string instead of a NULL pointer as wszComputerName to the GetPrinterLevel* functions, because this variable is later used as source for StringCbCopyExW.
* Don't check for GetLastError() == ERROR_SUCCESS in tests. Windows apparently only sets the last error in case of failure.
  The Printing code should probably be changed similarly in a future commit.

Should fix CORE-14072

22 months ago[NTFS] Fix the FileNamesInformation/FileNameInformation class confusion that was...
Pierre Schweitzer [Sun, 10 Dec 2017 10:25:48 +0000 (11:25 +0100)]
[NTFS] Fix the FileNamesInformation/FileNameInformation class confusion that was spotted on FastFAT.
What should also be fixed is the partial return of data on first entry enumeration.

22 months ago[NTFS] - Respect NTFS' file ordering when enumerating a directory. Split off part...
Trevor Thompson [Sat, 9 Sep 2017 23:10:52 +0000 (23:10 +0000)]
[NTFS] - Respect NTFS' file ordering when enumerating a directory. Split off part of BrowseIndexEntries() into a separate function to simplify the code.
AddNewMftEntry() - Zero the (larger) buffer for the bitmap prior to reading the bitmap.
BrowseIndexEntries() - Check sub-nodes before checking an index entry. Read and use the index bitmap when checking sub-nodes.
+BrowseSubNodeIndexEntries() - Called for sub-nodes of an index when browsing index entries.
+NtfsDumpData() - Diagnostic function which allows for visualizing a series of bytes.

svn path=/branches/GSoC_2016/NTFS/; revision=75817

22 months ago[NTFS] - Fix some errors that break building in C89 mode, and remove an extraneous...
Trevor Thompson [Fri, 1 Sep 2017 00:27:34 +0000 (00:27 +0000)]
[NTFS] - Fix some errors that break building in C89 mode, and remove an extraneous "ninja livecd" that got inserted in a comment. Thanks to Doug Lyons for spotting these errors.
SplitBTree() - comment-out redundant code for finding the median key and improve comments.

svn path=/branches/GSoC_2016/NTFS/; revision=75727

22 months ago[NTFS] - Add some helper functions for new features. Add some fixes. Add support...
Trevor Thompson [Tue, 29 Aug 2017 15:51:14 +0000 (15:51 +0000)]
[NTFS] - Add some helper functions for new features. Add some fixes. Add support for creating an index allocation, splitting a b-tree node, or "demoting" the index root. This allows for file creation without functional limitations.
+AddBitmap() - adds a $BITMAP attribute to a file record.
+AddIndexAllocation() - adds an $INDEX_ALLOCATION attribute to a file record.
+CountBTreeKeys() - Counts the number of linked B-Tree keys.
CreateIndexBufferFromBTreeNode() - Set INDEX_NODE_LARGE if the node has sub-nodes.
CreateIndexRootFromBTree() - Simplify the usage and math of MaxIndexSize; make it only account for the cumulative size of the index entries.
+DemoteBTreeRoot() - Replaces the contents of an index root with a dummy key, and puts those contents in a new node, which is made a child of the dummy key. This is done when an index root grows too large.
+GetIndexEntryVCN() - Retrieves the VCN from an index entry.
NtfsAddFilenameToDirectory() - Fix math for MaxIndexRootSize.
NtfsInsertKey() - Add support for splitting a B-Tree node. Don't check size of index root (that will be handled later).
+SplitBTreeNode() - Called when a B-Tree node grows too large.
UpdateIndexAllocation() - Create an $I30 index allocation attribute and bitmap attribute if needed.
UpdateIndexNode() - Update children before updating the current node. Store VCN of child nodes in the index entries of their respective keys.

svn path=/branches/GSoC_2016/NTFS/; revision=75707

22 months ago[NTFS] - Fix increasing the mft size, to keep chkdsk happy.
Trevor Thompson [Mon, 28 Aug 2017 03:11:38 +0000 (03:11 +0000)]
[NTFS] - Fix increasing the mft size, to keep chkdsk happy.
IncreaseMftSize() - Add some fixes. Write blank records to newly-allocated mft entries, and update $MFTMirr when finished; these changes are needed for chkdsk.  Increase size by 64 records instead of 8.
+UpdateMftMirror() - Backs up the first ~4 master file table entries to the $MFTMirr file.

svn path=/branches/GSoC_2016/NTFS/; revision=75694

22 months ago[NTFS] - Fix for C89 compliance.
Trevor Thompson [Sun, 27 Aug 2017 14:43:35 +0000 (14:43 +0000)]
[NTFS] - Fix for C89 compliance.

svn path=/branches/GSoC_2016/NTFS/; revision=75693

22 months ago[NTFS] - Add support for directory creation. Add some helper functions, some comments...
Trevor Thompson [Sun, 27 Aug 2017 14:37:17 +0000 (14:37 +0000)]
[NTFS] - Add support for directory creation. Add some helper functions, some comments, and some fixes.
+AddIndexRoot() - Creates an $INDEX_ROOT attribute and adds it to a file record.
AddNewMftEntry() - Make sure the buffer used by RtlInitializeBitmap() is ULONG-aligned, and a ULONG-multiple in size, per MSDN.
AllocateIndexNode() - Calculate BytesNeeded correctly. Read $BITMAP attribute before increasing its length, in anticipation of a future commit that will check for a free bit before assigning a new index record to the end of the allocation. Use appropriate Set*AttributeDataLength() function, as $BITMAP can be resident or non-resident.
B_TREE_FILENAME_NODE - Give two members more accurate names: change "ExistsOnDisk" member to "HasValidVCN" and rename "NodeNumber" member "VCN."
+CreateEmptyBTree() - Creates a B-Tree to represent an empty directory (for AddIndexRoot).
+NtfsCreateEmptyFileRecord() - Creates an empty file record in memory, with no attributes.
CreateIndexRootFromBTree() - Fix TotalSizeOfEntries calculation.
+NtfsCreateDirectory() - Creates a file record for an empty directory and adds it to the mft.

svn path=/branches/GSoC_2016/NTFS/; revision=75692

22 months ago[NTFS] - When creating files:
Trevor Thompson [Fri, 25 Aug 2017 17:16:04 +0000 (17:16 +0000)]
[NTFS] - When creating files:
-Don't add a preceding backslash when creating files on root.
-Use NTFS_FILE_NAME_POSIX name type if CaseSensitive option is specified.
-Don't try to create a file when a folder is requested (folder creation is still TODO).

svn path=/branches/GSoC_2016/NTFS/; revision=75671

22 months ago[NTFS] - Allow for creating a file when the index root gets too large and needs to...
Trevor Thompson [Tue, 15 Aug 2017 19:57:55 +0000 (19:57 +0000)]
[NTFS] - Allow for creating a file when the index root gets too large and needs to be moved into an index record. Add some helper functions.
+AllocateIndexNode() - Allocates a new index record in an index allocation.
+CreateDummyKey() - Creates the final B_TREE_KEY for a B_TREE_FILENAME_NODE. Also creates the associated index entry.
GetSizeOfIndexEntries() - Sums the size of each index entry in every key in a B-Tree node.
+SetIndexEntryVCN() - Sets the VCN of a given IndexEntry.
NtfsInsertKey() - Handle instance when the index root grows too large. If it does, add its contents to a new sub-node, and replace contents with a dummy-key whose child is the new node.
UpdateIndexAllocation() - Update index entry if a key has just been assigned a child allocation.
UpdateIndexNode() - Make sure the node exists on disk, and allocate an index record for it if it doesn't.

svn path=/branches/GSoC_2016/NTFS/; revision=75557

22 months ago[NTFS] - Allow for resizing an attribute in the middle of a file record. Add a helper...
Trevor Thompson [Tue, 15 Aug 2017 19:32:20 +0000 (19:32 +0000)]
[NTFS] - Allow for resizing an attribute in the middle of a file record. Add a helper function and minor improvements:
AddRun() - Allow for resizing the size of the data runs when the attribute isn't the last in the file record. Fix some comments.
CreateIndexBufferFromBTreeNode(), CreateIndexRootFromBTree - Fix math of IndexSize when checking if the index buffer is too large.
InternalSetResidentAttributeLength() - Allow changing the length of an attribute in the middle of a file record. Adjust the position of every attribute after the one being resized.
+MoveAttributes() - Moves a block of attributes to a new location in the file Record.
PrintAllVCNs() - Add consideration for an index allocation with a size of 0.
WriteAttribute() - Add optional parameter for a pointer to the file record being written to. If passed a file record, WriteAttribute() will skip reading the file record from disk, and will update the file record in memory before returning. This helps callers that use the file record after writing an attribute to stay in-sync with what's on disk.

svn path=/branches/GSoC_2016/NTFS/; revision=75554

22 months ago[NTFS] - Refactor to allow the copy of the attribute stored in NTFS_ATTR_CONTEXT...
Trevor Thompson [Sun, 6 Aug 2017 02:54:15 +0000 (02:54 +0000)]
[NTFS] - Refactor to allow the copy of the attribute stored in NTFS_ATTR_CONTEXT to have a dynamic length; change Record member from an NTFS_ATTR_RECORD to a PNTFS_ATTR_RECORD.  Rename it pRecord to reinforce the change. Fix some bugs related to the record size changing.
-PrepareAttributeContext() - update to allocate memory for pRecord. Don't assume allocations are succeeding.
-ReleaseAttributeContext() - update to free memory for pRecord.
-InternalSetResidentAttributeLength() - Increase size of AttrContext->pRecord as needed. Update to return an NTSTATUS.
-SetResidentAttributeDataLength() - Fix bug that could occur when migrating resident attributes to non-resident if AttrContext->pRecord is too small for the new attribute.
-AddRun() - Fix a bug by reallocating AttrContext->pRecord if the record needs to be enlarged.

svn path=/branches/GSoC_2016/NTFS/; revision=75493

22 months ago[NTFS] - Fix index entries storing the wrong allocated file size when the file is...
Trevor Thompson [Fri, 4 Aug 2017 17:58:06 +0000 (17:58 +0000)]
[NTFS] - Fix index entries storing the wrong allocated file size when the file is resident. Fix a typo in a DPRINT.

svn path=/branches/GSoC_2016/NTFS/; revision=75479

22 months ago[NTFS] - Add some improvements to B-Tree support. Add preliminary support for trees...
Trevor Thompson [Thu, 27 Jul 2017 19:52:33 +0000 (19:52 +0000)]
[NTFS] - Add some improvements to B-Tree support. Add preliminary support for trees of arbitrary depth. Add support for creating files in directories which have an index allocation, provided there aren't too many files and the node doesn't need to be split.
-CreateBTreeFromIndex() - Fix memory allocation; allocate sizeof(B_TREE_KEY) bytes for the key, not the size of the pointer. Add support for child nodes. Update parameter list.
-CreateIndexRootFromBTree() - Update Header->Flags if any of index root's keys have sub-nodes.
+CreateIndexBufferFromBTreeNode() - Converts a B-Tree node to an index buffer to be written to the index allocation.
+UpdateIndexAllocation() - Updates all of the stale nodes in an index allocation based on a PB_TREE.
+UpdateIndexNode() - Writes a B-Tree node into the index allocation.
+CreateBTreeKeyFromFilename() - Creates a PB_TREE_KEY based on a FILENAME_ATTRIBUTE.
-DestroyBTreeKey() - Destroy a child node, if present.
-DumpBTreeKey() - Dump a child node, if present.
-DumpBTreeNode() - Include Node->KeyCount in output.
-NtfsAddFilenameToDirectory() - Call UpdateIndexAllocation() prior to CreateIndexRootFromBTree().
-Update B_TREE_FILENAME_NODE with members to keep track of its existence on disk.

svn path=/branches/GSoC_2016/NTFS/; revision=75428

22 months ago[NTFS] - Add GetAllocationOffsetFromVCN() function, which was mistakenly left out...
Trevor Thompson [Thu, 27 Jul 2017 18:34:23 +0000 (18:34 +0000)]
[NTFS] - Add GetAllocationOffsetFromVCN() function, which was mistakenly left out of the last commit.

svn path=/branches/GSoC_2016/NTFS/; revision=75425

22 months ago[NTFS] - Add some utility functions and improve some comments. Improve NtfsAddFilenam...
Trevor Thompson [Thu, 27 Jul 2017 18:22:24 +0000 (18:22 +0000)]
[NTFS] - Add some utility functions and improve some comments. Improve NtfsAddFilenameToDirectory().
+PrintAllVCNs() - Diagnostic function which prints VCN of every node in an index allocation.
+GetAllocationOffsetFromVCN() - Calculates location of an index buffer from the node's VCN.
+GetInfoClassName() - Gets a string representation of an info class enumeration, to speed up development of unimplemented classes.
-NtfsSetInformation() & NtfsQueryInformation() - Use GetInfoClassName to report unhandled information classes.
-CompareTreeKeys() - Add a comment and clarify some comments.
-NtfsAddFilenameToDirectory() - Don't try to update the size of Index Root on disk if the attribute length hasn't changed.

svn path=/branches/GSoC_2016/NTFS/; revision=75424

22 months ago[NTFS] - After creating a new file, update creation disposition before calling NtfsCr...
Trevor Thompson [Thu, 27 Jul 2017 11:35:50 +0000 (11:35 +0000)]
[NTFS] - After creating a new file, update creation disposition before calling NtfsCreateFile() recursively. This fixes creating a file via right-clicking in a folder.

svn path=/branches/GSoC_2016/NTFS/; revision=75423

22 months ago[NTFS] - Fix some more issues, including remaining issues marked as "unresolved"...
Trevor Thompson [Tue, 18 Jul 2017 19:59:36 +0000 (19:59 +0000)]
[NTFS] - Fix some more issues, including remaining issues marked as "unresolved" from CR-123:
-Add define for indexed flag for resident attributes, RA_INDEXED.
-CreateBTreeFromIndex() - Don't try to read index entries beyond attribute length.
-Move NtfsAddFileNameToDirectory() from dirctl.c to mft.c (no changes to function).
-SetResidentAttributeDataLength() - Don't try to free AttribData if it hasn't been allocated. Cast IndexRecord to PUCHAR for WriteAttribute(), and cast BitmapData to PCHAR for ReadAttribute() (make gcc happy).
-Replace magic number 16 with a define, NTFS_FILE_FIRST_USER_FILE.

svn path=/branches/GSoC_2016/NTFS/; revision=75371

22 months ago[NTFS] - Fix some formatting / style issues, per CR-123.
Trevor Thompson [Wed, 5 Jul 2017 22:10:22 +0000 (22:10 +0000)]
[NTFS] - Fix some formatting / style issues, per CR-123.

svn path=/branches/GSoC_2016/NTFS/; revision=75290

22 months ago[NTFS] - Add a few fixes and improvements, most from CR-123:
Trevor Thompson [Wed, 5 Jul 2017 16:29:16 +0000 (16:29 +0000)]
[NTFS] - Add a few fixes and improvements, most from CR-123:
-Add ATTR_RECORD_ALIGNMENT define to replace magic value of 8 when we need to adjust an attribute's beginning or length.
-Don't use int's.
-GetPackedByteCount() - Remove unused "bytes" variable.

svn path=/branches/GSoC_2016/NTFS/; revision=75288

22 months ago[NTFS] - Add some fixes and improvements to mft.c from CR-123:
Trevor Thompson [Wed, 5 Jul 2017 05:09:51 +0000 (05:09 +0000)]
[NTFS] - Add some fixes and improvements to mft.c from CR-123:
FindAttribute() - Use * sizeof(WCHAR) in place bit-shifting wizardry.
IncreaseMftSize() - Remove two useless casts. Return error code if WriteAttribute() fails.
SetNonResidentAttributeDataLength() - Assert that AttrContext parameter describes a NonResident attribute. When migrating a resident attribute to non-resident, don't leak memory if FsRtlInitializeLargeMcb() throws an exception, and don't mark the attribute as non-resident until after the Mcb is initialized.
InternalSetResidentAttributeLength() and SetResidentAttributeLength() - Assert that AttrContext parameter describes a resident attribute.
AddNewMftEntry() - Simplify math of backing up and restoring reserved bits by changing BitmapData to PUCHAR type. Don't attempt to modify a volume with more than 2^32 clusters.
AddFixupArray() - Use ULONG in place of int.

svn path=/branches/GSoC_2016/NTFS/; revision=75284

22 months ago[NTFS] - Add some fixes and improvements to finfo.c from CR-123:
Trevor Thompson [Wed, 5 Jul 2017 03:11:13 +0000 (03:11 +0000)]
[NTFS] - Add some fixes and improvements to finfo.c from CR-123:
NtfsSetEndOfFile() - Make fileNameAttribute and filename variables uppercase. Don't leak FileRecord if we can't truncate the file. Don't leak memory if there's no FileName attribute.

svn path=/branches/GSoC_2016/NTFS/; revision=75283

22 months ago[NTFS] - Add some fixes and improvements to create.c, dirctl.c and fcb.c from CR...
Trevor Thompson [Tue, 4 Jul 2017 22:34:17 +0000 (22:34 +0000)]
[NTFS] - Add some fixes and improvements to create.c, dirctl.c and fcb.c from CR-123:
-NtfsOpenFile() - Replace an ExFreePool() with ExFreePoolWithTag().
-NtfsCreateFile() - Fix broken cast with BooleanFlagOn() macro.
-NtfsAddFilenameToDirectory() - Remove an extra cast. Return an error if we fail to allocate I30IndexRoot.
-NtfsGetNextPathElement(), NtfsWSubString(), NtfsGetFCBForFile() - Use PCWSTR in place of const PWCHAR or PWCHAR  where it makes sense.

svn path=/branches/GSoC_2016/NTFS/; revision=75281

22 months ago[NTFS] - Add some fixes and improvements to btree.c from CR-123:
Trevor Thompson [Tue, 4 Jul 2017 21:47:43 +0000 (21:47 +0000)]
[NTFS] - Add some fixes and improvements to btree.c from CR-123:
-CompareTreeKeys() - Assert that the first key isn't the dummy key.
-CreateIndexRootFromBTree() - Assert that CurrentKey->IndexEntry->Length isn't 0.
-DumpBTreeKey() - Use sizeof(WCHAR) in place of magic 2.
-NtfsInsertKey() - Check for allocation failure of NewKey.

svn path=/branches/GSoC_2016/NTFS/; revision=75280

22 months ago[NTFS] - Add some fixes and improvements to attribute.c from CR-123:
Trevor Thompson [Tue, 4 Jul 2017 21:40:02 +0000 (21:40 +0000)]
[NTFS] - Add some fixes and improvements to attribute.c from CR-123:
-AddFileName() - Don't use dedicated buffer for FileNameNoPath, just point into FileObject->FileName's buffer. Don't use RtlCopyUnicodeString(), just update pointers.
-AddRun() - Fix an SEH2_YIELD with missing return statement.
-FreeClusters() - Use ULONG_MAX in place of 0xffffffff.
-NtfsDumpIndexRootAttribute() - Use consistent UpperCase naming convention. Use BooleanFlagOn() macro where appropriate. Replace magic 8 with sizeof(ULONGLONG).
-GetFileNameAttributeLength() - Add documentation.

svn path=/branches/GSoC_2016/NTFS/; revision=75279

22 months ago[NTFS] - Fix UpdateFileNameRecord() when the file being updated resides in $INDEX_ROO...
Trevor Thompson [Tue, 4 Jul 2017 21:16:46 +0000 (21:16 +0000)]
[NTFS] - Fix UpdateFileNameRecord() when the file being updated resides in $INDEX_ROOT. Also, don't attempt to read beyond size of index root attribute, and check return value after reading.

svn path=/branches/GSoC_2016/NTFS/; revision=75278

22 months ago[NTFS] - Fix AddFileName() when the file path is two or more directories deep.
Trevor Thompson [Tue, 4 Jul 2017 20:47:06 +0000 (20:47 +0000)]
[NTFS] - Fix AddFileName() when the file path is two or more directories deep.

svn path=/branches/GSoC_2016/NTFS/; revision=75277

22 months ago[NTFS] - Fix gcc build. Fix CompareTreeKeys(): Don't consider Key1 a possible dummy...
Trevor Thompson [Thu, 29 Jun 2017 02:36:00 +0000 (02:36 +0000)]
[NTFS] - Fix gcc build. Fix CompareTreeKeys(): Don't consider Key1 a possible dummy key. Don't assume filenames are the same length.

svn path=/branches/GSoC_2016/NTFS/; revision=75228

22 months ago[NTFS] - Fix a couple of issues spotted by Thomas: Maintain alphabetical ordering...
Trevor Thompson [Wed, 28 Jun 2017 18:22:42 +0000 (18:22 +0000)]
[NTFS] - Fix a couple of issues spotted by Thomas: Maintain alphabetical ordering of CMakeLists.txt, fix casts to BOOLEAN with BooleanFlagOn macro.

svn path=/branches/GSoC_2016/NTFS/; revision=75224

22 months ago[NTFS] - Begin to implement B-Trees. Allow for creating several new files in a directory.
Trevor Thompson [Wed, 28 Jun 2017 03:45:52 +0000 (03:45 +0000)]
[NTFS] - Begin to implement B-Trees. Allow for creating several new files in a directory.
NtfsAddFilenameToDirectory() - Add CaseSensitive parameter. Update to use new B-Tree code: First, the index is read and converted to a B-Tree in memory. Next, a key for the new file is inserted into the tree. Finally, the tree is converted back to an index root attribute which is written to disk.
+btree.c - Includes functions related to B-Trees (AKA B*Trees).
ntfs.h - Added several structures for representing B-Trees in memory.
Known limitations: For simplicity, only trees with a depth of one are currently supported (i.e. an ordered list of filenames). Directories that have or will require an index allocation to store all their filenames are still TODO. As a consequence, the user will only be able to create about 6 files in a directory.

svn path=/branches/GSoC_2016/NTFS/; revision=75223

22 months ago[NTFS] - Add some minor fixes and improvements:
Trevor Thompson [Mon, 26 Jun 2017 05:17:08 +0000 (05:17 +0000)]
[NTFS] - Add some minor fixes and improvements:
Improve, add, or fix some DPRINTs. In particular, ULONG's should use %lu, not %u. Also, don't be silent about filesystem corruption.
NtfsFindMftRecord() - move CaseSensitive parameter before output parameter in parameter list.

svn path=/branches/GSoC_2016/NTFS/; revision=75199

22 months ago[NTFS] - Fix creation of files with long filenames.
Trevor Thompson [Sun, 25 Jun 2017 04:29:04 +0000 (04:29 +0000)]
[NTFS] - Fix creation of files with long filenames.

svn path=/branches/GSoC_2016/NTFS/; revision=75193

22 months ago[NTFS] - In the NtfsAddFilenameToDirectory() function, rename DirectoryContext parame...
Trevor Thompson [Sun, 25 Jun 2017 02:56:40 +0000 (02:56 +0000)]
[NTFS] - In the NtfsAddFilenameToDirectory() function, rename DirectoryContext parameter to the more descriptive, and accurate, IndexRootContext (to simplify the next commit).

svn path=/branches/GSoC_2016/NTFS/; revision=75192

22 months ago[NTFS] - Fix a mistake with AddFileName() from my last commit. Also, move CaseSensiti...
Trevor Thompson [Sun, 25 Jun 2017 02:38:15 +0000 (02:38 +0000)]
[NTFS] - Fix a mistake with AddFileName() from my last commit. Also, move CaseSensitive parameter before output parameters in the parameter list of several functions.

svn path=/branches/GSoC_2016/NTFS/; revision=75191

22 months ago[NTFS] - Fix POSIX rules. Fix accessing long filenames created in Windows when 8dot3...
Trevor Thompson [Sat, 24 Jun 2017 04:36:28 +0000 (04:36 +0000)]
[NTFS] - Fix POSIX rules. Fix accessing long filenames created in Windows when 8dot3 name creation is disabled.
Whether or not a filename should be interpreted as case-sensitive is dependent on a flag passed to the driver when a file is created (opened); it's separate from the namespace associated with the file being accessed.

svn path=/branches/GSoC_2016/NTFS/; revision=75178

22 months ago[NTFS] - Fix IncreaseMftSize(); check IrpContext to see if waiting for exclusive...
Trevor Thompson [Fri, 23 Jun 2017 17:30:13 +0000 (17:30 +0000)]
[NTFS] - Fix IncreaseMftSize(); check IrpContext to see if waiting for exclusive access to the MFT is allowed. As pointed out by Pierre.

svn path=/branches/GSoC_2016/NTFS/; revision=75170

22 months ago[NTFS] - Add support for expanding the master file table. Fix a bug with BrowseIndexE...
Trevor Thompson [Fri, 16 Jun 2017 06:00:09 +0000 (06:00 +0000)]
[NTFS] - Add support for expanding the master file table. Fix a bug with BrowseIndexEntries(). Improve diagnostic output.
-AddNewMftEntry() - Increase size of MFT as needed. Fix math for bitmap length. Don't assign file records to MFT indices 0x10 - 0x17; In Windows, these records aren't used unless they have to be, even though they are marked as unused in the bitmap.
+IncreaseMftSize() - Adds room for additional file records in the master file table.
-BrowseIndexEntries() - allow for the rare situation when a non-system file has an MFT index of 0x10.

svn path=/branches/GSoC_2016/NTFS/; revision=75056

22 months ago[NTFS] - Restructure some code in preparation for the next commit:
Trevor Thompson [Fri, 16 Jun 2017 05:43:52 +0000 (05:43 +0000)]
[NTFS] - Restructure some code in preparation for the next commit:
-SetAttributeDataLength() has been split into two functions, SetNonResidentAttributeDataLength() and SetResidentAttributeDataLength(). This should improve code readibility and allows for resizing an attribute when there's no FileObject associated with it.
-Added "MftDataOffset" member to DEVICE_EXTENSION, which stores the offset of the Mft's $DATA attribute. (I'm starting to think it's better to add a member for offset to NTFS_ATTR_CONTEXT directly, but I'll save that level of restructuring for a future commit.)

svn path=/branches/GSoC_2016/NTFS/; revision=75055

22 months ago[NTFS] - Add some improvements to the previous commit, as suggested by Thomas.
Trevor Thompson [Fri, 16 Jun 2017 05:42:01 +0000 (05:42 +0000)]
[NTFS] - Add some improvements to the previous commit, as suggested by Thomas.

svn path=/branches/GSoC_2016/NTFS/; revision=75054

22 months ago[NTFS] - Add the most basic support for file creation. Expand diagnostic output,...
Trevor Thompson [Fri, 9 Jun 2017 03:14:30 +0000 (03:14 +0000)]
[NTFS] - Add the most basic support for file creation. Expand diagnostic output, especially in NtfsDumpIndexRootAttribute(). Replace an ExFreePool() with ExFreePoolWithTag().
AddFileName() - Add a parameter to receive the Mft index of the parent directory. Fix so the name of the file will be stored in the attribute, not the name of the directory.
NtfsCreateFile() - Open a file that was successfully created, instead of assuming failure.
NtfsCreateFileRecord() - Add the filename attribute of the created file to the parent directory's index.
+NtfsAddFilenameToDirectory() - Adds a $FILE_NAME attribute to a given directory index. Presently, a file can be created in an empty directory only.
AddNewMftEntry() - Add a parameter to receive the mft index where the new entry was stored.

svn path=/branches/GSoC_2016/NTFS/; revision=74970

22 months ago[NTFS] - Decrease debug spam
Trevor Thompson [Sun, 28 May 2017 20:51:31 +0000 (20:51 +0000)]
[NTFS] - Decrease debug spam

svn path=/branches/GSoC_2016/NTFS/; revision=74694

22 months ago[NTFS] - Disable write support by default. Enable it via the registry.
Trevor Thompson [Sat, 27 May 2017 19:32:43 +0000 (19:32 +0000)]
[NTFS] - Disable write support by default. Enable it via the registry.
[BOOTDATA] - Add a commented-out section to hivesys.inf which can add the required key to enable NTFS write support.

svn path=/branches/GSoC_2016/NTFS/; revision=74685

22 months ago[NTFS] - Add support for changing a file's size via SetEndOfFile():
Trevor Thompson [Sat, 27 May 2017 03:20:31 +0000 (03:20 +0000)]
[NTFS] - Add support for changing a file's size via SetEndOfFile():
+NtfsSetEndOfFile() - Sets the end of file (file size) for a given file.
+NtfsSetInformation() - Sets the specified file information. At this point, only FileEndOfFileInformation is fully implemented. FileAllocationInformation is handled the same way and not truly implemented, but this works well enough for SetEndOfFile().
Overwriting a file in NTFS should now work in the majority of use cases.

svn path=/branches/GSoC_2016/NTFS/; revision=74675

22 months ago[NTFS] - Fix a bug with last commit, as spotted by Pierre.
Trevor Thompson [Sat, 13 May 2017 09:17:06 +0000 (09:17 +0000)]
[NTFS] - Fix a bug with last commit, as spotted by Pierre.

svn path=/branches/GSoC_2016/NTFS/; revision=74525

22 months ago[NTFS] - Expand support for resizing resident attributes and fix NtfsAllocateClusters().
Trevor Thompson [Sat, 13 May 2017 08:56:54 +0000 (08:56 +0000)]
[NTFS] - Expand support for resizing resident attributes and fix NtfsAllocateClusters().
-Modify SetAttributeDataLength() to allow a resident attribute to migrate to non-resident if the attribute grows too large to remain resident.
-Fix values returned by NtfsAllocateClusters() in case of error; return error codes, not 0.

svn path=/branches/GSoC_2016/NTFS/; revision=74524

22 months ago[NTFS] - Commit early results of a small restructuring effort:
Trevor Thompson [Fri, 12 May 2017 22:16:20 +0000 (22:16 +0000)]
[NTFS] - Commit early results of a small restructuring effort:
-Add a new member to the NTFS_ATTR_CONTEXT struct, a LARGE_MCB. This allows an attribute context to describe the cluster mapping of a non-resident file while allowing that mapping to change dynamically, without the context itself needing to be resized. This fixes problems which sometimes arose from resizing files.
-Remove hacky code from NtfsWriteFile() for dealing with "stale" contexts. This fixes that issue.
-Update SetDataAttributeLength(), PrepareAttributeContext(), ReleaseAttributeContext(), FreeClusters(), and AddRun() for the new member.
-Update ReadAttribute() and WriteAttribute() to work with the changed structure. A very-soon-to-come commit will overhaul these functions so they'll operate directly on the LARGE_MCB, instead of converting to and from a packed list of data runs. (Sparse files are broken until then.)
-Rename "RunBufferOffset" to "RunBufferSize" in several places where appropriate.
-Fix, improve, and add some comments.

svn path=/branches/GSoC_2016/NTFS/; revision=74523

22 months ago[NTFS] Add support for creating new MFT entries:
Trevor Thompson [Sun, 16 Apr 2017 00:17:07 +0000 (00:17 +0000)]
[NTFS] Add support for creating new MFT entries:
+AddStandardInformation(), +AddData(), +AddFileName() - Add attributes to a file record
+NtfsCreateFileRecord() - Creates a new file record and saves it to the MFT.
+AddNewMftEntry() - Adds a file record to the MFT.
NtfsCreateFile() - Modified to create a file record on a file-creation request (file creation is still unsupported; the created file needs to be added to the parent's directory index).
+SetFileRecordEnd() - Establishes a new file record size
UpdateFileRecord() - Improved documentation
InternalSetResidentAttributeLength() - Updated to use SetFileRecordEnd().

svn path=/branches/GSoC_2016/NTFS/; revision=74321

22 months ago[NTFS]
Trevor Thompson [Mon, 22 Aug 2016 11:08:22 +0000 (11:08 +0000)]
+NtfsDumpFileRecord() - Provides diagnostic information about a file record.

svn path=/branches/GSoC_2016/NTFS/; revision=72424

22 months ago[NTFS]
Trevor Thompson [Mon, 22 Aug 2016 08:27:35 +0000 (08:27 +0000)]
*UpdateFileRecord() - Fix a DPRINT

svn path=/branches/GSoC_2016/NTFS/; revision=72423

22 months ago[NTFS]
Trevor Thompson [Mon, 22 Aug 2016 08:11:12 +0000 (08:11 +0000)]
Add some fixes to attrib.c, as suggested by Pierre Schweitzer:
*ConvertLargeMCBToDataRuns() - Use MS portable type, ULONG, for variable i.
*FreeClusters(), AddRun() - Check for invalid parameter before allocating memory, and confirm the memory is allocated.
*ConvertDataRunsToLargeMCB(), AddRun() - Avoid code duplication by using ExRaiseStatus() in try block, and return accurate status via _SEH2_GetExceptionCode().

svn path=/branches/GSoC_2016/NTFS/; revision=72422

22 months ago[NTFS]
Trevor Thompson [Tue, 19 Jul 2016 15:31:22 +0000 (15:31 +0000)]
+FreeClusters(). Fix a DPRINT.

svn path=/branches/GSoC_2016/NTFS/; revision=71968

22 months ago[NTFS]
Trevor Thompson [Sun, 17 Jul 2016 14:04:01 +0000 (14:04 +0000)]
Address some minor issues with attrib.c: Fix gcc build. Fix formatting.

svn path=/branches/GSoC_2016/NTFS/; revision=71957

22 months ago[NTFS]
Trevor Thompson [Fri, 15 Jul 2016 15:27:04 +0000 (15:27 +0000)]
*AddRun() - Don't leak RunBuffer when encountering errors.
Handle exception from FsRtlAddLargeMcbEntry().

svn path=/branches/GSoC_2016/NTFS/; revision=71945

22 months ago[NTFS]
Trevor Thompson [Thu, 14 Jul 2016 15:20:48 +0000 (15:20 +0000)]
Implement AddRun(). Add support functions and documentation.
*SetAttributeDataLength(), *NtfsWriteFile() - Update for AddRun() implementation. Add hack to SetAttributeDataLength() to allow notepad.exe to save files until freeing clusters is implemented.

svn path=/branches/GSoC_2016/NTFS/; revision=71942

22 months ago[NTFS]
Trevor Thompson [Wed, 13 Jul 2016 14:49:46 +0000 (14:49 +0000)]
Various minor changes to fix GCC build.

svn path=/branches/GSoC_2016/NTFS/; revision=71922

22 months ago[NTFS]
Trevor Thompson [Wed, 13 Jul 2016 11:51:16 +0000 (11:51 +0000)]
Add support functions, fix warning from previous commit.
+NtfsDumpDataRuns(), +NtfsDumpDataRunData() - Provide diagnostic output.
+GetPackedByteCount() - Used to encode data runs.

svn path=/branches/GSoC_2016/NTFS/; revision=71921

22 months ago[NTFS]
Trevor Thompson [Wed, 13 Jul 2016 09:26:04 +0000 (09:26 +0000)]
UpdateFileRecord() - Remove fixup array before returning.

svn path=/branches/GSoC_2016/NTFS/; revision=71920

22 months ago[NTFS]
Trevor Thompson [Tue, 12 Jul 2016 09:57:16 +0000 (09:57 +0000)]
Add error-checking to InternalGetNextAttribute(); don't crash if CurrAttr->Length is invalid.

svn path=/branches/GSoC_2016/NTFS/; revision=71897

22 months ago[NTFS]
Trevor Thompson [Fri, 8 Jul 2016 12:05:19 +0000 (12:05 +0000)]
Fix broken check for free disk space in NtfsAllocateClusters().

svn path=/branches/GSoC_2016/NTFS/; revision=71858

22 months ago[NTFS]
Trevor Thompson [Fri, 8 Jul 2016 11:59:25 +0000 (11:59 +0000)]
Simplify GetLastClusterInDataRun() and clean up NtfsAllocateClusters(). No functional changes.

svn path=/branches/GSoC_2016/NTFS/; revision=71857

22 months ago[NTFS]
Trevor Thompson [Thu, 7 Jul 2016 08:17:07 +0000 (08:17 +0000)]
Simplify and optimize InternalSetResidentAttributeLength(), as suggested by Pierre.

svn path=/branches/GSoC_2016/NTFS/; revision=71837

22 months ago[NTFS]
Trevor Thompson [Wed, 6 Jul 2016 07:57:57 +0000 (07:57 +0000)]
Fix copy-paste error in SetAttributeDataLength()

svn path=/branches/GSoC_2016/NTFS/; revision=71832

22 months ago[NTFS]
Trevor Thompson [Tue, 5 Jul 2016 07:00:43 +0000 (07:00 +0000)]
Add ability to write to resident attributes.
SetAttributeDataLength() - Check if the file is memory mapped before truncating
+InternalSetResidentAttributeLength() - Used by SetAttributeDataLength()

svn path=/branches/GSoC_2016/NTFS/; revision=71820

22 months ago[NTFS]
Trevor Thompson [Wed, 29 Jun 2016 17:49:36 +0000 (17:49 +0000)]
Fix typo in NtfsAllocateClusters(), spotted by ThFabba.

svn path=/branches/GSoC_2016/NTFS/; revision=71697

22 months ago[NTFS]
Trevor Thompson [Wed, 29 Jun 2016 16:35:36 +0000 (16:35 +0000)]
Lay some groundwork for extending allocation size.
+AddRun() - Unimplemented

svn path=/branches/GSoC_2016/NTFS/; revision=71696

22 months ago[NTFS]
Trevor Thompson [Sun, 26 Jun 2016 21:06:02 +0000 (21:06 +0000)]
Allow for an existing file to be opened with FILE_OVERWRITE, FILE_OVERWRITE_IF, or FILE_SUPERSEDE dispositions, and truncate that file. This allows for a file to be opened and saved in Notepad.exe [provided that file is non-resident and its allocation size doesn't need to change].

svn path=/branches/GSoC_2016/NTFS/; revision=71680

22 months ago[NTFS]
Trevor Thompson [Sun, 26 Jun 2016 17:03:31 +0000 (17:03 +0000)]
Remove unused parameter from SetAttributeDataLength.

svn path=/branches/GSoC_2016/NTFS/; revision=71677

22 months ago[NTFS]
Trevor Thompson [Thu, 23 Jun 2016 18:02:03 +0000 (18:02 +0000)]
Update a file's size in the relevant $FILE_NAME attribute of the index entry in the parent directory.
+UpdateFileNameRecord() - Searches a parent directory for the proper index entry, then updates the file sizes in that entry.
+UpdateIndexEntryFileNameSize() - Recursively searches directory index and applies the size update.

svn path=/branches/GSoC_2016/NTFS/; revision=71664

22 months ago[NTFS]
Trevor Thompson [Thu, 23 Jun 2016 15:37:19 +0000 (15:37 +0000)]
Fix Up AddFixupArray - It needs to accept a PNTFS_RECORD_HEADER for parameter 2, not a PFILE_RECORD_HEADER.

svn path=/branches/GSoC_2016/NTFS/; revision=71662

22 months ago[NTFS]
Trevor Thompson [Wed, 22 Jun 2016 21:20:50 +0000 (21:20 +0000)]
When writing to a file, increase the file size if trying to write past the end.
*FindAttribute() has been given an optional pointer to a ULONG that will receive the offset of the found attribute from the beginning of the record. This is to allow for found attributes to be written back into their file records.
+UpdateFileRecord() - Updates a file record in the master file table at a given index.
+AddFixupArray() - Prepares a file record or directory index for writing to the disk.

svn path=/branches/GSoC_2016/NTFS/; revision=71660

22 months ago[NTFS]
Trevor Thompson [Sun, 12 Jun 2016 04:02:52 +0000 (04:02 +0000)]
Add fixes to WriteAttribute():
-Remove erroneous check for end of run (before writing to the last run returned)
-Properly dereference RealLengthWritten pointer, as reported in CR-90

svn path=/branches/GSoC_2016/NTFS/; revision=71616

22 months ago[NTFS]
Trevor Thompson [Sun, 1 May 2016 16:21:53 +0000 (16:21 +0000)]
Added minimal write support from CORE-10998 along with updates as suggested by CR-90.

svn path=/branches/GSoC_2016/NTFS/; revision=71224

22 months ago[USETUP] LanguageList => MUILanguageList. #179
Amine Khaldi [Sat, 9 Dec 2017 22:33:02 +0000 (23:33 +0100)]
[USETUP] LanguageList => MUILanguageList. #179

22 months ago[ITSS] Get the stubs file out of the source files list. #179
Amine Khaldi [Sat, 9 Dec 2017 22:21:04 +0000 (23:21 +0100)]
[ITSS] Get the stubs file out of the source files list. #179

22 months ago[FASTFAT] Fix FastFAT not returning short name for FAT volumes in FileBothDirectoryIn...
Pierre Schweitzer [Sat, 9 Dec 2017 20:22:55 +0000 (21:22 +0100)]
[FASTFAT] Fix FastFAT not returning short name for FAT volumes in FileBothDirectoryInformation case
This is likely due to a copy paste error where long name was copied twice and short never.
Fun fact: this was not affecting FATX volumes
Fun fact2: this was defeating a buffer overflow check and thus was allowing buffer overflow!


22 months ago[CHKDSK] Don't continue repair if volume is in use
Pierre Schweitzer [Sat, 9 Dec 2017 20:10:32 +0000 (21:10 +0100)]
[CHKDSK] Don't continue repair if volume is in use
This makes use of previous commit vfatlib improvements that allow
caller to stop chkdsk if locking fail, which will happen if volume is in use.
That way, ReactOS users won't be able any longer to f*** up their C:\ volume
by attempting to chkdsk -f it!


22 months ago[VFATLIB] Make Chkdsk handle volume opening locking failures.
Pierre Schweitzer [Sat, 9 Dec 2017 20:07:09 +0000 (21:07 +0100)]
[VFATLIB] Make Chkdsk handle volume opening locking failures.
For instance, when repair is required, we can ask the caller whether we should
continue or not in case locking failed.
Also, introduced a hack for 1st stage where IopParseDevice() hack is in usage
so that broken NTSTATUS is diverted to appropriate status.
That way, usetup will properly continue even if locking failed (due to its
callback stub!)


22 months ago[SMDLL] Use precomp.h in dllmain.c.
Amine Khaldi [Sat, 9 Dec 2017 19:47:27 +0000 (20:47 +0100)]
[SMDLL] Use precomp.h in dllmain.c.

22 months ago[BROWSEUI/SHELLBARS] Add a PCH.
Amine Khaldi [Sat, 9 Dec 2017 19:46:40 +0000 (20:46 +0100)]

22 months ago[GDI32_APITEST] Properly add CreateDIBPatternBrush.c to the source files list instead...
Amine Khaldi [Sat, 9 Dec 2017 19:03:08 +0000 (20:03 +0100)]
[GDI32_APITEST] Properly add CreateDIBPatternBrush.c to the source files list instead of relying on CMake to do so.

22 months ago[ACLEDIT][ATL][ATL80][FLTMGR] Get the def files out of the source files lists. #179
Amine Khaldi [Sat, 9 Dec 2017 18:58:43 +0000 (19:58 +0100)]
[ACLEDIT][ATL][ATL80][FLTMGR] Get the def files out of the source files lists. #179