Commit graph

71854 commits

Author SHA1 Message Date
Serge Gautherie
b893124a20 [NTFS] Fix 2 Clang-Cl warnings about CurrentKey->IndexEntry->Flags
"warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses]"

CORE-14306
2018-05-04 08:08:45 +02:00
Wexpo Lyu
b8a3f0eeee [REACTOS] Update simplified chinese translation (#529)
Minor updates fixing grammar, spacing and typos.
2018-05-03 11:53:19 +02:00
Serge Gautherie
7326dc03b6 [CMAKE] USE_CLANG_CL: Add "-Wno-parentheses-equality"
Silence some "code style" warnings.

CORE-14306
2018-05-03 08:12:17 +02:00
Serge Gautherie
8c312fe7e1 [ADVAPI32] Fix 2 TRACE() format copypastas. 2018-05-03 08:10:43 +02:00
Pierre Schweitzer
65e29b4b1f
[NTOSKRNL] Optimize a bit deferred writes.
In the lazy writer run, first post items that are queued for this.
Only then, start executing deferred writes if any.
If there were any, reschedule immediately a lazy writer run, to keep
Cc warm and to make it unqueue write faster in case of high IOs situation.
To make second lazy writer run happen faster, we keep our state active to
use short delay (1s) instead of standard idle (3s).
2018-05-02 23:33:45 +02:00
Eric Kohl
db60cd219c [ADVAPI32] SEH-protext the calls to service control handlers
ScControlService:
- SEH-protext the calls to service control handlers.
- Return ERROR_EXCEPTION_IN_SERVICE if a service control handler throws an exception.
- Return ERROR_SERVICE_CANNOT_ACCEPT_CTRL if no service control handler has been registered for the service.
2018-05-02 23:24:26 +02:00
Wexpo Lyu
62a90470f8 [WINLOGON] Update simplified chinese translation (#528) 2018-05-02 14:12:59 +02:00
Hermès Bélusca-Maïto
44b5f652a5
[WINLOGON] Delimit the custom system shutdown message within a read-only edit control. 2018-05-02 00:24:11 +02:00
Hermès Bélusca-Maïto
f34a30fec4
[SHUTDOWN] Actually all shutdown.exe utilities from all Windows (>= XP) versions (and not just Vista+) support a comment string of up to 512, *EVEN IF* they mention in their help message that the comment can only be up to 127 characters long. I have really tested that ;-) (And what is more, shutdown's utility from Whistler support an arbitrary comment length!) So here I remove the code that imposes this limit and I just check for no more than 512 characters. I also fix an out-of-bounds check for argv. 2018-05-02 00:24:10 +02:00
Hermès Bélusca-Maïto
11f0e2c0f6
[MSGINA] Fix layout of the security dialog box; add some french translation. 2018-05-02 00:24:01 +02:00
Eric Kohl
fd090c6ca1 [SERVICES] Implement RI_ScSetServiceBitsA/W
- RI_ScSetServiceBitsA: Just call RI_ScSetServiceBitsW.
- RI_ScSetServiceBitsW: Store the service bits in the service list entry.
TODO: Merge all service bits in a global variable and pass it to the server service. Maybe use netapi.I_NetServerSetServiceBits(Ex)?
2018-05-01 21:33:37 +02:00
Hermès Bélusca-Maïto
73f799629b
[TRANSLATION] Minor translation update. 2018-05-01 17:45:06 +02:00
Hermès Bélusca-Maïto
bf88116252
[SHELL32] Fix the layout of the Run/Execute dialog for many languages.
French fix covers CORE-12548.
2018-05-01 17:45:03 +02:00
Hermès Bélusca-Maïto
2feea26d4c
[README] Restore the UTF-8 BOM as it otherwise does not behave well with
ReactOS' Notepad.

This reverts commit 3d012a4405.
2018-05-01 17:44:54 +02:00
Eric Kohl
027904b441 [SRVSVC][WKSSVC] Server and workstation service set their service bit when they are running 2018-05-01 16:37:48 +02:00
Eric Kohl
1362983bb7 [IDL] Fix redefinition of server types when lmserver.h is included too 2018-05-01 16:15:52 +02:00
Eric Kohl
ce0856099a [SDK] Improve lmserver.h
- Add _SERVER_TRANSPORT_INFO_1, _SERVER_TRANSPORT_INFO_2, and _SERVER_TRANSPORT_INFO_3 structs.
- Fix the calling convention of SetServiceBits().
2018-05-01 16:15:51 +02:00
Pierre Schweitzer
3b6d00eab9
[DRWTSN32] Add French translation. 2018-05-01 12:19:17 +02:00
Pierre Schweitzer
54c049bd6e
[NTOKSNRL] Always flush dirty VACB.
Recent changes seem to show that it's not
required to be exclusive on VACB to be able
to flush it.

This commit goes with f2c44aa and fixes the
last issues going with copying huge files.
There are no longer BSODs (be it in Mm or Cc).
I could, with 750MB RAM extract a 2GB file from
a 53MB archive and copy a 2,5GB file from a VBox
share to the disk. Note that writes are often
deferred, so if copy works, it's not that fast for now.

Note that it also brings some beloved behavior from
Windows: copy times are totally unreliable now when
writes are deferred. Little remaining times when
actively copying, high remaining times when deferred
writes in action. And goes between both... Sorry! ;-)

https://xkcd.com/612/

CORE-9696
CORE-11175
2018-04-30 22:24:30 +02:00
David Knapp
7673837a85 [SDK] Add description to MANUALLY_INITIATED_CRASH (#509) 2018-04-30 12:55:34 +02:00
Pierre Schweitzer
74c5d8b6bd
[NTOSKRNL] Free unused VACB when required.
Same mechanism exists in Windows (even their Cc
is way different from ours...) where when Cc is
out of memory (in their case, out of VACB), we
will start scavenge old & unused VACB to free
some of the memory.

It's useful in case we're operating we big files
operations, we may run out of memory where to map
VACB for them, so start to scavenge VACB to free
some of that memory.

With this, I am able to install Qt 4.8.6 with 2,5GB of RAM,
scavenging acting when needed!

CORE-12081
CORE-14582
2018-04-30 12:10:24 +02:00
Pierre Schweitzer
cc54e51495
[NTOSKRNL] Unmark dirty first, and then write.
This will avoid trying to flush twice a dirty VACB under
high IOs pressure.

CORE-14584
2018-04-30 10:36:19 +02:00
Pierre Schweitzer
2a7d16727a
[FASTFAT] Implement write IOs defering.
Before any write operation that would involve caching, ask
the cache controler whether writing would make it exceed its memory
consumption. If so, queue the write operation for later execution.

In case the write operation can wait, then, the FSD operation will be
halted until the write is allowed.

I could test it successfully by copying huge files from a FAT volume to
another. The write is halted until some portions of the file is written
to the disk.
I could also properly install Qt (SDK) on ReactOS with this and less than 1GB RAM:
- https://www.heisspiter.net/~Pierre/rostests/Qt_OS.png
- https://www.heisspiter.net/~Pierre/rostests/Qt_OS2.png

CORE-12081
CORE-14582
CORE-14313
2018-04-29 20:42:53 +02:00
Pierre Schweitzer
f2c44aa483
[NTOSKRNL] Fix lazy writer for in-use VACB.
Adjusting refcount and enabling lazy-write for pinned
VACB makes it actually more efficient, often purging
data to disk, reducing memory stress for the system.

This is required for defering writes.

This commit unfortunately (?) reverts a previous revert.

CORE-12081
CORE-14582
CORE-14313
2018-04-29 20:42:53 +02:00
Hermès Bélusca-Maïto
3055afce81
[MODE] Improve the way the DOS device statuses are enumerated via the "mode" command (without parameters). 2018-04-29 19:36:13 +02:00
Hermès Bélusca-Maïto
37deb7593e
[WINLOGON] Update french translation of the system shutdown dialog. 2018-04-29 18:02:41 +02:00
Eric Kohl
153c645b2c [WINLOGON] Add german translation of the system shutdown dialog 2018-04-29 17:44:41 +02:00
Eric Kohl
ec2bfa2e11 [WINLOGON] Localize the shutdown timeout 2018-04-29 17:09:37 +02:00
Hermès Bélusca-Maïto
84e78e6a15
[MODE] Use more translated strings. CORE-12178 2018-04-29 16:57:11 +02:00
Eric Kohl
b6ebd50d3f [SYSSETUP] Close the device key after the property sheet page has been released. 2018-04-29 15:41:38 +02:00
Bișoc George
6c16f12de5 [CALC][CLIPBRD][SOLITAIRE][SPIDER][NOTEPAD][REGEDIT][TASKMGR] Disable help menu/button 2018-04-29 15:24:11 +02:00
Eric Kohl
1cb019bd21 [SYSSETUP] Read driver settings from and write them to the registry
- Read the driver settings from the registry.
- Write the driver settings to the registry.
- Make the read-only edit control for the input buffer length look like a non-read-only one because it is controlled by the up-down control.
2018-04-29 14:55:57 +02:00
Pierre Schweitzer
00e843b1ed
[FASTFAT] Reduce the number of local declaration. 2018-04-29 12:33:53 +02:00
Pierre Schweitzer
3dc4d408b2
[SDK] Enforce callback type for KdRosRegisterCliCallback(), KdRosDeregisterCliCallback(). 2018-04-29 12:33:14 +02:00
Pierre Schweitzer
fd8197645f
[FASTFAT] Use KdRosRegisterCliCallback() to register in KDBG. 2018-04-29 12:23:18 +02:00
Pierre Schweitzer
de88611590
[SDK] Make KdRosRegisterCliCallback() return status from KdSystemDebugControl(). 2018-04-29 12:19:21 +02:00
Pierre Schweitzer
c5a35ecd37 [FASTFAT] Introduce a KDBG extension.
This is a PoC of what it's possible to realize thanks to an
already existing hack in ntoskrnl :-).
With this extension, on the kdb:> prompt, you're able to type
in commands that will be handled by the FastFAT driver and not
by the kernel, allowing internal debug, not possible otherwise.

So far, three commands exist:
- ?fat.vols: lists all the mounted volumes by FastFAT
- ?fat.files: lists all the files on a specific volume (with their attributes)
- ?fat.setdbgfile: allows watching on specifics files lifetime

This is obviously only the begin and could be greatly improved.

For instance, this is what allowed to debug CORE-14557
2018-04-29 12:15:11 +02:00
Hermès Bélusca-Maïto
cb20bf8c90
[WINLOGON] Usability enhancement for the RPC SystemShutdown functionality.
- Perform an immediate system shutdown if the timeout is zero, otherwise
  display the countdown shutdown dialog.
- Cleanup pShutdownParams->pszMessage as soon as the dialog goes away.
- It actually appears (tested on Windows 2000 and 2003) that sending
  WM_CLOSE messages from a user-mode app to the shutdown dialog really
  do nothing (and in particular does not cancel the shutdown!), so modify
  the code to take this fact into account.
2018-04-29 01:02:05 +02:00
Hermès Bélusca-Maïto
03c233bcd0
[CMD] Improve how the command prompt displays when one presses Ctrl-C/break after having pressed ENTER, or after a command has been run. 2018-04-29 00:57:16 +02:00
Hermès Bélusca-Maïto
a3b36f8d3e
[CMD] Don't reset bCtrlBreak too early.
This allows to break commands such as:

C:\ReactOS\system32> for %f in (*.*) do dir

as one would expect: stop the currently running 'dir' and the 'for'.
"bCtrlBreak" doesn't need to be volatile too.
2018-04-29 00:53:49 +02:00
Hermès Bélusca-Maïto
6dd27bd467
[CMD] Use CheckCtrlBreak(). 2018-04-29 00:50:40 +02:00
James Woodcock
8b72fce3e1
[CMD] Use _T() rather than L to initialise TCHARS. 2018-04-28 22:16:59 +02:00
James Woodcock
d7e71357dc
[CMD] Fix CTRL-C handling.
Using CTRL-C to cancel command line input would leave the prompt in
a state where the next command would be ignored.  For example:

dir<CTRL-C>
dir

would cause cmd.exe to ignore the second dir command.
2018-04-28 22:16:58 +02:00
James Woodcock
23de2099e0
[CMD] Don't pass CTRL-C to child processes.
CORE-11677

The standard Win32 Console Control Handler will give CTRL-C events to
processes spawned from cmd.exe. If cmd.exe calls GenerateConsolCtrlEvent()
then the child process will receive two CTRL-C events.
2018-04-28 22:16:50 +02:00
Pierre Schweitzer
94ead99e0c [FASTFAT] Don't leak directories FILE_OBJECT, FCB and cache entries.
Once a directory is crossed (opened or a child is opened), associated
FCB structure is created in FastFAT, but also a stream FO for caching.
Up to now, due to an extra reference taken by the stream file object,
even when the directory was no longer used, the directory was kept in
memory: the FCB was never deleted, the file object was never dereferenced,
and the cache never released.

The immediate effect of this bug is that our FAT driver was leaking every
directory that was used affecting the whole OS situation. In case of
directories intensive operation (like extraction the ReactOS source code
in ReactOS ;-)), we were just killin the whole OS RAM without any way to
release it and recover.

The other side effects: IOs were faster as half of the FS was always
permanant in RAM.

This commit fixes the issue by forcing the FSD to release the FO,
and the cache when a directory is no longer used, leading to its
destruction in RAM.
Downside: on IO intensive operation, expect slowdowns, obviously,
there's less caching now. But more efficient!

CORE-14557
2018-04-28 18:33:14 +02:00
Pierre Schweitzer
2ea6de8a42
[NTOSKRNL] Also try to extract name from FCB when leaking VACB 2018-04-27 19:01:35 +02:00
Pierre Schweitzer
43836b0fbb
[NTOSKRNL] In !filecache, try to display FCB name
When no name is set in the file object, try to read the name
from the FCB. We only support FastFAT (ours) FCB for now.

This is clearly a hack, but for a kdbg command, so ;-)
2018-04-27 18:57:30 +02:00
Pierre Schweitzer
315f9a13d4
[FASTFAT] When allocating a FCB, set its node type code.
We set the same value as MS FastFAT driver for consistency.
2018-04-27 18:56:31 +02:00
Pierre Schweitzer
579a784e04
[NTOSKNRL] In case we leak a VACB, debug as much information as possible.
CORE-14578
2018-04-27 14:14:56 +02:00
Pierre Schweitzer
fcf83315dc
[NTOSKRNL] Noisily dereference mapped VACB on cache release.
It seems that on process killing, some VACB may be deleted while
still mapped. With current reference counting, they will actually
not be deleted, but leaked, and an ASSERT will be triggered.

CORE-14578
2018-04-27 10:23:06 +02:00