Commit graph

85353 commits

Author SHA1 Message Date
Mark Jansen
24a56f89ab
Rework apisets to use a table
This removes all fake apiset forwarders,
and handles apisets inside ntdll.
This is not 100% compatible with how windows does it, but it should be good enough for us.
2024-04-27 22:51:34 +02:00
Doug Lyons
116c0cd9a5
[USER32] Fix resource display of MSVC BI_BITFIELD 32-bit bitmaps. (#5942)
This specifically fixes Wordpad's Open and SaveAs dialog toolbars.

* Fix 16 bpp BI_BITFIELDS like 32 bpp was done.
* Add BI_BITFIELDS byte count into bitmap_info_size return value.
* Account for GCC's windres.exe incorrect omission for BI_BITFIELDS DWORD's when processing 32-bpp bitmaps.
* Account for GCC's windres.exe failing with bitmaps with BI_BITFIELDS and bits per plane is 16
* Fix WARN message to show error on either 16-bpp or 32-bpp
* Correct comment regarding GCC compiled bitmaps with compression of BI_BITFIELD's to add 16 bits per plane

CORE-17005
2024-04-27 14:38:06 -05:00
Ratin Gao
ff12fc9fb9 [NTDLL_APITEST] Use RtlConvertUlongToLuid 2024-04-27 21:31:53 +02:00
Doug Lyons
ffd060295d
[USER32_APITEST] Test MSVC rc.exe compiled 32-bpp BI_BITFIELD bmp (#6755)
* Cleanup and Changes based on reviewer comments
* For failure, show returned and expected values

CORE-17005
2024-04-27 13:30:51 -05:00
Ryan Kounter
ab72bc06d6
[COMCTL32] Fix header redraw glitches when resizing (#6799)
Fixes COMCTL32 headers from being garbage text when resizing while drawn off screen.

- Invalidate header item rect before scrolling to prevent the divider from being redrawn over and over.
- Invalidate header item text through adding flag SW_INVALIDATE to ScrollWindowEx call to prevent the text from being redrawn over and over.

CORE-19404
2024-04-27 09:56:03 -06:00
Timo Kreuzer
b8e50f787d [NTOS:KE/x64] On syscalls clear nested task flag
When this flag is not cleared and the system returns with an IRET, this causes a #GP. Randomly hit by the umkm:SystemCall test.
2024-04-27 15:12:40 +02:00
Timo Kreuzer
701b0a3f24
[MSVCRTEX] Only include _CrtDbgReport*, if we don't already export them (#6797)
* [MSVCRTEX] Only include _CrtDbgReport*, if we don't already export them

For some reason clang builds now want the ___chkstk_ms on x64 as well, so add it.
2024-04-27 14:59:06 +03:00
Marcin Jabłoński
dcf9eb060a
[SHELL32] Fix Control_RunDLLW (#5400)
This commit makes Control_RunDLLW pass all but one tests from rostests (the one test that fails is the first one, but it only fails if the path to the test program contains a space).

- Rework string parsing in the Control_DoLaunch routine
- Do not send the CPL_STARTWPARMSW message, if no extra parameters were specified (fixes the failing Got NULL lParam2! and some CPL_STARTWPARMSW: expected -1 got %d tests)
- Do not resolve invalid dialog names to index zero, unless the name is empty (fixes some of the failing CPL_DBLCLK: expected -1 got %d tests)
- Handle quotes in the second part of wszCmd

CORE-8981
2024-04-26 18:28:46 -06:00
Timo Kreuzer
45aa8f8111 [CRT] Remove useless #undef abort from process.h 2024-04-26 15:16:31 +02:00
Timo Kreuzer
6beff505d7 [CRT] Add _Exit to process.h
This is already done this way in our stdlib.h. It is needed by GCC 13 C++ headers. The problem happens like this:
- telnet/precomp.h includes fstream from GCC
- fstream includes pthread.h from GCC
- pthread.h includes process.h from ReactOS
- process.h defines _CRT_TERMINATE_DEFINED, but doesn't declare _Exit
- fstream includes cstdlib from GCC
- cstdlib includes stdlib.h from GCC (#include_next)
- stdlib.h doesn't declare _Exit, because _CRT_TERMINATE_DEFINED is defined
- cstdlib uses _Exit
2024-04-26 15:16:31 +02:00
Thamatip Chitpong
cd0bb1af07 [TASKMGR] Process page: Allow using "Open File Location" functionality without running Explorer shell
If Explorer shell is not available, use ReactOS's alternative file browser instead.
2024-04-26 07:16:00 +07:00
Thamatip Chitpong
6d16d27462 [TASKMGR] Process page: Improve readability of command line string formatting code 2024-04-26 07:16:00 +07:00
Thamatip Chitpong
018264f38f
[NTUSER] Release modifier keys when deactivating message queue (#6754)
CORE-14768
2024-04-26 07:12:02 +07:00
Katayama Hirofumi MZ
1331e2fb02
[KERNEL32_APITEST] Add LCMapString testcase (#6805)
@tkreuzer said he wants LCMapString testcase in chat.
JIRA issue: N/A
2024-04-26 08:39:45 +09:00
Doug Lyons
3693d55404
[SHELL32] Fix Desktop folder details view (#5743)
* [SHELL32] Fix Desktop Folder Details View

JIRA issue: [CORE-19177|https://jira.reactos.org/browse/CORE-19177]

* Remove Comments column from Desktop Folder Details View and simplify code.
* Revise date/time sort based on reviewer comments.
* Swap size and type column positions for desktop folder details view.

With help from Whindmar, most (hopefully all) of the magic number for the columns
have been removed in all of the shell folders.

Co-authored-by: Whindmar Saksit <whindsaks@proton.me>
Co-authored-by: Carl J. Bialorucki <cbialo2@outlook.com>
2024-04-25 17:20:28 -05:00
Timo Kreuzer
1f49173f82 [CRT] Massively improve performance of rand_s
Cache the pointer to RtlGenRandom instead of loading and unloading advapi32 every single time this function is called.
2024-04-25 05:25:12 +02:00
Timo Kreuzer
3c55252828 [CRT_APITEST] Add test for rand_s 2024-04-25 05:25:12 +02:00
Timo Kreuzer
f319538d98 [CRT] Move rand_s into it's own file 2024-04-25 05:25:12 +02:00
Timo Kreuzer
0ea48e79fc [CRT] Move _invalid_parameter into its own file
As the author of the code, I changed to license to MIT.
2024-04-25 05:25:12 +02:00
Timo Kreuzer
43beb913da [CRT] Move rand to stdlib, where it belongs 2024-04-25 05:25:12 +02:00
Katayama Hirofumi MZ
d55f49978d
Revert "[SHELL32] SHChangeNotify: Use tree for CDirectoryList (#6784)" (#6800)
Reverts #6784 that was a guilty commit of CORE-19531 that causing performance regression.

JIRA issue: CORE-19531
2024-04-25 09:01:21 +09:00
Katayama Hirofumi MZ
91acf823d8
[SHELL32] SHChangeNotify: Use tree for CDirectoryList (#6784)
Optimize for speed and memory.
JIRA issue: CORE-13950
CDirectoryList class exists just for remembering which file item is a directory or
not, in order to notify the filesystem item changes. This information can
become a tree data structure.

- Add CFSPathIterator and CFSNode helper classes.
- CFSNode is a class for tree nodes.
- Re-implement CDirectoryList class by using tree nodes.
- Delete CDirectoryItem class.
2024-04-24 19:44:30 +09:00
Katayama Hirofumi MZ
c0c270e90e [SHELL32_APITEST] Delete obsolete "iexplore.exe" tests
Follow-up to 75cc5b2. CORE-13950
2024-04-24 19:06:48 +09:00
Katayama Hirofumi MZ
75cc5b2b1c [SHELL32_APITEST] Commonize FindSubProgram function
and delete obsolete "iexplore.exe" tests. CORE-13950
2024-04-24 19:03:10 +09:00
Katayama Hirofumi MZ
8337df2bd1
[SHELL32_APITEST] SHChangeNotify: Improve coverity (#6798)
Improve coverity and speed.
JIRA issue: CORE-13950
- Move NUM_STAGE to the header file.
- Add stages.
- Add DIRTYPE_DESKTOP_DIR and
  DIRTYPE_PRINTERS directory types.
- Improve speed more.
2024-04-24 18:25:15 +09:00
Oleg Dubinskiy
24e088daa8
[MMEBUDDY] Implement support for looped wave playback (#6761)
Fix playing wave header multiple times in case the caller requests to do it.
In Windows, it is supported by WHDR_BEGINLOOP and WHDR_ENDLOOP flags (specified together) and dwLoops member of WAVEHDR structure (ususally set to 0xFFFFFFFF (INFINITE constant)).
- Check whenther WHDR_BEGINLOOP | WHDR_ENDLOOP flags are set by the caller.
- If they are, get the amount of times to play the header from WAVEHDR.dwLoops.
- Perform wave header competion only when the loop count is equal to zero. Otherwise, don't do it.
- When the header is entirely committed, in case completion is not needed, reset committed bytes count to the starting value to allow the header play again.
- Decrement loop count in case it isn't set to INFINITE, to mark loop as played correctly. When this count becomes zero, then the playback is finished.
- Get rid from SOUND_OVERLAPPED.PerformCompletion member. Use SOUND_DEVICE_INSTANCE.LoopsRemaining == 0 condition instead.
- Do this only for WaveOut devices, since MSDN states it works only with output buffers. Hence, there is nothing changed for WaveIn.
- Update an appropriate statement about unimplemented functionality from mmebuddy notes.
TODO: handle the case when multiple headers are requested to be looped (WHDR_BEGINLOOP and WHDR_ENDLOOP are set separatedly: 1st flag - in the 1st header, and 2nd in the last header). Currently, only looping a single wave header is supported.
This fixes the playback in the apps those request looped wave playback of some audio data (e. g., BRD Demo app, which did play its sound only first 500 ms before, now it plays endlessly until closing it manually).
CORE-10118
2024-04-24 11:08:40 +02:00
Katayama Hirofumi MZ
d23573beed [SHELL32_APITEST] Follow-up to #6796 (25e2f5f)
This change will massively improve speed.
JIRA issue: CORE-13950
- Set zero to INTERVAL.
- Remove SHCNF_FLUSHNOWAIT.
2024-04-24 10:22:42 +09:00
Katayama Hirofumi MZ
25e2f5f277
[SHELL32_APITEST] Make SHChangeNotify testcase more stable (#6796)
Make the testcase more stable and faster. Reduce code.
JIRA issue: CORE-13950
- Use WM_COPYDATA message to communicate with shell32_apitest_sub.exe.
- Use concept of "stage" and "step".
- Do multiple checks in one step.
- Flush notification by using (SHCNF_FLUSH | SHCNF_FLUSHNOWAIT) flags.
2024-04-24 09:10:29 +09:00
Timo Kreuzer
6ac260dcec [NTOS:KE/x64] Handle NMI vs swapgs race condition 2024-04-23 15:50:06 +02:00
Timo Kreuzer
72fd54a7f4 [NTOS:KE/x64] Implement Kd processor switching 2024-04-23 15:50:06 +02:00
Timo Kreuzer
9229709312 [NTOS:KE/x64] Implement processor freeze code 2024-04-23 15:50:06 +02:00
Timo Kreuzer
af2ce4d08f [NTOS:KE/x64] Implement KiSaveProcessorState / KiRestoreProcessorState 2024-04-23 15:50:06 +02:00
Timo Kreuzer
1d289fec77 [NTOS:KE] Improve freeze code in KeBugCheckWithTf
- Don't wait 1 second for each processor
- Use AFFINITY_MASK
- Use Prcb->Number, which is more future proof than KeGetCurrentProcessorNumber
- Improve for loop
2024-04-23 15:50:06 +02:00
Timo Kreuzer
d96f01b5dc [NTOS:KE/x64] Add KiNmiInterruptHandler
So far it only calls KiHandleNmi. It will also handle processor freeze later.

TODO: Pass TF_WITH_EF to directly generate a KEXCEPTION_FRAME
2024-04-23 15:50:06 +02:00
Katayama Hirofumi MZ
1dc8d80ca1
[SHELL32] SHChangeNotify: Add drive, remove drive (#6782)
Implementing missing features...
JIRA issue: CORE-13950
- Add WM_DEVICECHANGE message handler in the shell window to detect
  DBT_DEVICEARRIVAL and DBT_DEVICEREMOVECOMPLETE.
- Use GetLogicalDrives function to detect drives.
- Use SHChangeNotify to send SHCNE_DRIVEADD and
  SHCNE_DRIVEREMOVED notifications.
- Modify CDefView::OnChangeNotify.
2024-04-23 08:28:38 +09:00
Timo Kreuzer
a8ece7e81a [EVTLIB] Fix size of event log record
The size is 32bit, don't read a SIZE_T. Fixes crashes of advapi32_winetest eventlog on x64.
2024-04-22 16:42:02 +02:00
Timo Kreuzer
565828127f [WIN32U_VISTA] Add win32u.dll for Vista 2024-04-22 10:15:40 +02:00
Serge Gautherie
fd331f1494 [NTUSER] UserSetCursorPos(): Use an early return
Addendum to 76290a6 (0.4.15-dev-7889).
2024-04-20 13:57:35 -06:00
Serge Gautherie
8b9bf3369c
[DOC] 3rd Party Files.txt: Update 3 unknown versions (#6771) 2024-04-20 21:29:26 +02:00
Katayama Hirofumi MZ
0240a87618
[SHELL32] SHChangeNotify: SHCNF_DWORD and SHCNF_PRINTERA/W (#6777)
Implementing missing features...
JIRA issue: CORE-13950
- Add Shell_ParsePrinterName helper function.
- Implement SHCNF_DWORD, SHCNF_PRINTERA,
  and SHCNF_PRINTERW types of SHChangeNotify
  function.
2024-04-20 23:11:31 +09:00
Serge Gautherie
68a8619b7b [SHELL32] Remove 2 redundant initializations
Addendum to 6146fd0 (r54688) and 99b2e3d (r54979).
2024-04-20 01:50:14 +04:00
Whindmar Saksit
62c30d1f93
[SHELL32] SHCreateDefaultContextMenu: Pass HWND to callback (#6764)
The caller's callback function is supposed to receive the window handle
passed to SHCreateDefaultContextMenu / CDefFolderMenu_Create2.
2024-04-20 00:34:45 +03:00
Whindmar Saksit
dacdd80390
[ZIPFLDR] Fix ShellExecute opening a .zip (#6714)
ShellExecute on a .zip file fails because the command in the registry
uses rundll32 that passes in an ANSI string, which is the default for
exported functions without a W suffix.

- This should also fix RAPPS not being able to open downloaded .zip files
- I made it use the full path to Explorer for good measure

Fixes regression introduced by 0.4.15-dev-6343-g bf2cec186c (#5411)

CORE-19506
2024-04-20 00:12:56 +03:00
Hermès Bélusca-Maïto
5f3554a40c
[FREELDR] Merge boot-drive and partition functionalities together (#6760)
And deprecate corresponding boot types "Drive" and "Partition".
These are replaced by the more general "BootSector" boot type.

Finish the unification of the code, started in commit ff85aa0c3,
that loads and boots disk MBR, partition VBR or boot sector in file.

A "WarnDeprecated()" helper is added to warn the user about the
deprecated features, and to inform them to adjust their FREELDR.INI
file in accordance.

In addition, bump FreeLoader version to 3.2 (at last!): a lot of
features have been added or deprecated since its last release.
2024-04-19 21:45:41 +02:00
Oleg Dubinskiy
5949c20d97
[MMIXER] Fix additional data size initialization for different audio formats (#6753)
Calculate size of the additinal data based on the format tag specified by the caller.
For PCM wave format, it should be zero, and for all others,
it should be taken from cbSize member of WAVEFORMATEX structure.
- Initialize data size for each format appropriately.
- Append it to the total pin connect allocation size, to allocate enough memory for it.
- Use it as additional data size for requested wave format.
- Append it to the total size of data format.
- Add SAL2 annotations for MMixerInitializeDataFormat function.
Fixes two crashes in winmm:capture and winmm:wave winetests, which have been introduced by 12b3272d9e.
So this is an addendum to that commit.
CORE-19514
2024-04-18 23:19:35 +02:00
Justin Miller
ad9c634efa
[SDK] Don't just infinitely spam the DbgPrint in the bootloader (#6763) 2024-04-18 12:08:00 -07:00
Mark Harmstone
dd6c1c8843 [FREELDR] Allow Freeloader to boot Vista revamp of PR #1905 (#6479)
[FREELDR] Add "WindowsVista" boot type
[FREELDR] Set GDT correctly for Vista
[FREELDR] Map first page of memory, this is an observed behavior, and
also increases stability boot Checked windows 2003 SP2 ntoskrnl with
freeloader.
[SDK] Don't assert on big keys in bootloader

Co-authored-by: Justin Miller <justin.miller@reactos.org>
2024-04-18 09:28:54 -07:00
Stanislav Motylkov
6d853be981 [ZIPFLDR] Make function prototype consistent
It is the only function in that file that used this format, all the others are one line.

Spotted by Whindmar Saksit.
2024-04-18 18:22:17 +03:00
Stanislav Motylkov
359c9c7b42 [SHELL32] Update Russian (ru-RU) translation
Addendum to 9238a1762f.
2024-04-18 18:18:16 +03:00
Carlo Bramini
605fa32d45
[CALC] Fix input bug when display is in error. (#5988)
CORE-19191

Reproduce the same behaviour of the calculator for Windows XP when an error condition is met.
When the result is NaN and it cannot be printed, the error condition is cleared by pressing the CLEAR button.
2024-04-18 11:39:46 +02:00