Jérôme Gardou
e706083d50
[LIBWINE] Return empty path when given a UNIX path
...
CORE-19444
2024-02-20 08:56:53 +01:00
Jérôme Gardou
69daff72d2
NTOS:CC Free some VACBs when we're under memory pressure
2023-07-29 14:00:44 +03:00
Jérôme Gardou
470ad18825
Revert "[NTOS:CC] Wake up lazy scan after inserting elements in the list."
...
This reverts commit 6e4f83da70 .
2023-07-29 14:00:44 +03:00
Jérôme Gardou
1599d7b794
[NTUSER] Always reference a window when using it as parent/child etc.
...
CORE-18811
2023-07-24 23:29:38 +02:00
Jérôme Gardou
b3d0591e76
[USER32] Use static inline instead of inline
...
Fixes compilation with less optimizations
2023-07-24 23:29:38 +02:00
Jérôme Gardou
57e018acf6
[NTOS:MM] Use FORCEINLINE instead of simple inline
...
inline implies an implementation must exist in another compilation unit
2023-07-23 23:58:42 +02:00
Jérôme Gardou
ea331f074c
[FRAMEDYN] Do not define GCC <-> MSVC aliases when building the DLL
...
This fixes some issue when compiling without optimizations on GCC
2023-07-23 23:58:42 +02:00
Jérôme Gardou
5508673dd5
[TXT2NLS] Explicitly include <cstdint>
2023-07-23 23:58:42 +02:00
Jérôme Gardou
2ae9feb59f
[NTOS] Properly implement and use FsRtlAcquireFileForModWriteEx
2022-11-02 19:41:04 +01:00
Jérôme Gardou
75125228be
[NTOS] Add some sanity checks when synchronizing PDEs
2022-09-17 13:48:56 +02:00
Jérôme Gardou
98e8827a59
[AMSTREAM_WINETEST] Add missing dependency
2022-09-05 18:27:25 +02:00
Jérôme Gardou
63bb43adbb
[MSI] Remove read-only bit when copying the package file
...
CopyFileW also copies the file attributes, and the copy will be opened with
write access later on.
This is import of Wine commit:
https://source.winehq.org/git/wine.git/commit/e830975806df9ef283c89f7153b06b145dfb2cec
Fixes MS Office 2000/2003 installers and probably others. CORE-17693
2021-12-18 15:44:04 +03:00
Jérôme Gardou
589016ddb9
[NTOS:MM] Implement MmFlushImageSection(MmFlushForWrite)
2021-08-07 09:34:58 +02:00
Jérôme Gardou
c4801ab696
[WIN32K] Do not release twice the lock on error path
2021-08-06 15:18:21 +02:00
Jérôme Gardou
6618d978cd
[CMAKE] Do not disable optimisations on ntoskrnl build
2021-08-06 15:17:49 +02:00
Jérôme Gardou
0bc00267df
[WIN32K] Init User part after GDI one.
...
But Initialize user lock first thing to avoid hitting newly introduced ASSERTS
This partly reverts commit 515d83a883 .
2021-08-06 10:15:02 +02:00
Jérôme Gardou
0782375f8b
[CRT] Add one missing entry to _syserr_list array, fix _sys_nerr definition
...
Partial revert of 296e07b94d
2021-08-05 15:35:19 +02:00
Jérôme Gardou
acf28dbc1e
[NTOS:MM] Fix the mess created by the "balancer thread"
...
When processing:
Make sure that the process is not terminating.
Make sure that the process WorkingSet is still valid
Protect accessing & writing to PTEs by acquiring the working set lock
CORE-17595 CORE-17642
2021-08-05 10:06:19 +02:00
Jérôme Gardou
676dc4b441
Revert "[NTOS:MM] Do proper checks & acquire proper locks when sweeping user pages"
...
This reverts commit 7c006df7e0 .
Note to self: This is what happens when you have too many branch and push the wrong one.
2021-08-04 23:57:39 +02:00
Jérôme Gardou
7c006df7e0
[NTOS:MM] Do proper checks & acquire proper locks when sweeping user pages
...
CORE-17595
2021-08-04 20:38:37 +02:00
Jérôme Gardou
789d7a7741
[NTOS:MM] When mapping pages for zeroing them, disable cache, enable write through
...
Idea from Thomas Faber
2021-08-04 17:48:39 +02:00
Jérôme Gardou
98e62b9bca
[NTOS:MM] In page zeroing thread, zero more than one page at a time.
2021-08-04 17:48:39 +02:00
Jérôme Gardou
e98de5ef1f
[NTOS:MM] Use KeZeroPages in zeroing thread
2021-08-04 17:48:39 +02:00
Jérôme Gardou
708dc6b7d6
[NTOS:MM] Do not zero-fill pages when not needed
2021-08-04 17:48:39 +02:00
Jérôme Gardou
42bec35f65
[NTOS:KE] Also rewrite KeZeroPages in assembly for amd64
...
Let's stick with "rep movsq" until we are able to have more precise benchmarks
2021-08-04 17:48:39 +02:00
Jérôme Gardou
51258295bd
[NTOS:KE] Rewrite KeZeroPages in assembly
...
We spend a lot of time in this function, let's optimize it.
2021-08-04 17:48:39 +02:00
Jérôme Gardou
34662e2f6f
[NTOS:MM] Copy the WorkingSet page when initializing "hand-built" process
...
CORE-17642
2021-08-04 11:49:38 +02:00
Jérôme Gardou
bd6fb80867
[WIN32K:NTUSER] In debug builds, enable free & tail checking when creating heaps
...
Actually catches bugs
2021-08-03 23:13:19 +02:00
Jérôme Gardou
b783b16cef
[WIN32K:USER] Fix potential use after free when painting child windows
2021-08-03 23:13:19 +02:00
Jérôme Gardou
d958dc9bc2
[WIN32K:NTUSER] Assert global user lock is held exclusively when using global & desktop heaps
...
They're explicitly not serialized because we count on this.
2021-08-03 23:13:19 +02:00
Jérôme Gardou
8c098ee8d2
[WIN32K:NTUSER] Make sure to hold User Global Lock before unmapping desktop heap
2021-08-03 23:13:19 +02:00
Jérôme Gardou
6ec0420dc6
[WIN32K:NTUSER] Allocate & free timers under global user lock
2021-08-03 23:13:19 +02:00
Jérôme Gardou
515d83a883
[WIN32K] On init, start by initializing NtUser stuff
...
Allocate gpsi (Global Server Info) after initializing & grabbing Userlock
2021-08-03 23:13:19 +02:00
Jérôme Gardou
be6a6b806a
[NTOS:MM] Remove dead code
2021-08-03 10:57:12 +02:00
Jérôme Gardou
c6d08c4828
[CMAKE] Update DLL base addresses
2021-08-03 10:36:32 +02:00
Jérôme Gardou
b0dfe20981
[NTOS:MM] Fix MiIsUserPte inline
2021-07-30 18:54:54 +02:00
Jérôme Gardou
ce65553eaa
[NTOS:MM] Annotate some functions with regards to MmPfnLock
...
Also fix MI_ASSERT_PFN_LOCK_HELD macro.
Now in debug builds, SpinLocks are always non-zero when held.
2021-07-27 15:36:55 +02:00
Jérôme Gardou
6150dc994a
[NTOS:MM] Always release PFN lock in MmDereferenceSegmentWithLock
...
All callers release it after calling it.
CORE-17698
2021-07-27 15:36:55 +02:00
Jérôme Gardou
2289deb849
[KMTESTS:NTOS_IO] Fix check of spinlocks in case of checked builds
...
Down back to zero failures
2021-07-23 17:40:57 +02:00
Jérôme Gardou
7448f4b807
[CMAKE] Turn ENABLE_ROSAPPS, ENABLE_ROSTESTS & ENABLE_WALLPAPERS into options
...
Enabling UI tools to toggle them easily
2021-07-05 15:24:46 +02:00
Jérôme Gardou
6e0d8de013
[KDGDB] Support "int 0x2c" for x86 & amd64 targets
2021-07-05 10:55:47 +02:00
Jérôme Gardou
e278b59d3a
[CMAKE] Cache compiler paths to make some utilities happy
...
VS code being one of them
2021-07-05 09:56:41 +02:00
Jérôme Gardou
0ffbbab5a2
[CRT] Revert unwanted part of f30136bc79
2021-06-29 12:48:25 +02:00
Jérôme Gardou
37d0a9c3f4
[NTOS:KE] Unconditionally check IRQL when acquiring & releasing spinlock at DISPATCH_LEVEL
2021-06-29 11:49:20 +02:00
Jérôme Gardou
f30136bc79
[NTOS:KE] Test spinlock ownership on both UP & MP build
...
There is no reason not to, and this avoids introducing bugs stupidly.
2021-06-29 11:49:20 +02:00
Jérôme Gardou
835c30232e
[NTOS:KD][NTOS:KD64][NTOS:KDBG] Fix IRQL & spinlock use
...
KD64: Raise to HIGH_LEVEL when entering trap
KDBG: lower to DISPATCH_LEVEL when applying IRQL hack & use a worker thread to load symbols
KD&KDBG: Actually unload symbols when required
2021-06-29 11:49:20 +02:00
Jérôme Gardou
54ecf703f2
[CMAKE:GCC] Produce RosSym data even when building with separate debug symbols
2021-06-29 11:49:20 +02:00
Jérôme Gardou
79c2972035
[NTOS:KD] Release lock before calling KdpPrint
...
Avoiding resursive spinlock acquisition
2021-06-29 11:49:20 +02:00
Jérôme Gardou
608032bd08
[NTOS:KD64][NTOS:KDBG] Fix spinlocks use
...
Raise IRQL before entering debugger, so that KeAcquireSpinLockAtDpcLevel works as expected.
- HIGH_LEVEL since we don't know where we are coming from.
Do not try to read debug symbol from files in KDBG.
- There is no reason that this works if Mm didn't map it in the first place.
2021-06-29 11:49:20 +02:00
Jérôme Gardou
5c332f6d36
[CMAKE] Get rid of freeldr_pe_dbg target
...
objcopy bug is now solved and I can't remember how this used to work anyway.
Use strip instead.
If you need to debug freeldr
- set SEPARATE_DBG cmake var to TRUE
- use qemu GDB stub
- In GDB : add-symbol-file <build_dir>/symbols/freeldr_pe.exe
2021-06-29 11:49:20 +02:00
Jérôme Gardou
66dea86d68
[NTOS:KDBG] Use internal KdpDPrintf instead of DbgPrint
...
DbgPrint is implemented through a breakpoint, and then KD tries to recursively
lock its own spinlock. Call a lower level routine instead.
2021-06-29 11:49:20 +02:00
Jérôme Gardou
813d9cd2cc
[WIN32K:NTUSER] Do not pass NULL keyboard layout to IntToUnicodeEx
...
There's an ASSERT on that
2021-06-29 11:49:20 +02:00
Jérôme Gardou
8d665f8959
[KMTESTS] Fix tests for uniprocessor checked build
2021-06-29 11:49:20 +02:00
Jérôme Gardou
e312a40ae2
[NTOS:KE] Implement KeAcquireInStackQueuedSpinLockForDpc & KeReleaseInStackQueuedSpinLockForDpc
2021-06-29 11:49:20 +02:00
Jérôme Gardou
56d0bc31ce
[HAL] Hack KeTryToAcquireQueuedSpinlock & KeTryToAcquireQueuedSpinLockRaiseToSynch into a somewhat working implementation
2021-06-29 11:49:20 +02:00
Jérôme Gardou
91587a432b
[NTOS:MM] Fix another instance of reentrant spinlock acquisition
2021-06-29 11:49:20 +02:00
Jérôme Gardou
ada609bdbc
[PSDK] Alias _Check_return_ annotation to warn_unused_result attribute
2021-06-28 10:20:57 +02:00
Jérôme Gardou
e10892e4f4
[CRT] Put __MINGW_EXTENSION (whatever that means) in front of function declarations
...
Needed for next commit
2021-06-28 10:20:57 +02:00
Jérôme Gardou
d1f5c31820
[SDK] Add GCC overrides for SAL annotations
...
GCC has some functions, variables & type attributes which can be used as aliases
for some of the SAL annotations. Although it's not as rich & precise, it's still useful
since we actually enable -Werror on GCC builds whereas we don't use such an option
on MSVC builds.
For now, _Must_inspect_result_ is aliased to warn_result_unused attribute.
2021-06-28 10:20:57 +02:00
Jérôme Gardou
a28a34f108
[NDK][XDK] Remove _Must_inspect_result_ from RtlTimeFieldsToTime & RtlTimeToSecondsSince1970
...
WDK doesn't have it and it causes more mess than anything.
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
28c5f7538a
[DDK] Do not put _Must_inspect_result_ on function returning void & without _Out_ parameters
2021-06-28 10:20:57 +02:00
Jérôme Gardou
46af941c4c
[NTOS:FSRTL] Check return status of FsRtl locking functions
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
e55eeb2d9c
[WDF] Synchronize function attributes between declaration & definition
...
Addendum to 1f377076d7
2021-06-28 10:20:57 +02:00
Jérôme Gardou
d924cb8271
[NTOS:CONFIG] Do not ignore Rtl*String functions return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
3ad38f29b5
[NTOS:OB] Use RtlInitUnicodeString for constant string
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
8178996559
[NTOS:SE] Do not ignore SepAccessCheckAndAuditAlarmWorker return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
07d38cd4c5
[NTOS:PO] Do not ignore IoRegisterPlugPlayNotification return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
230e6b9492
[NTOS:INBV] Do not ignore RtlUnicodeStringToOemString return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
838abc475c
[NTOS:IO] Do not ignore RtlDuplicateUnicodeString return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
cf1a95a588
[NTOS:EX] Do not ignore PsCreateSystemThread return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
93c0d324e0
[NTOS:EX] Do not ignore RtlAnsiStringToUnicodeString return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
376fbc5242
[NTOS:MM] Check result of RtlCreateUnicodeString in MmGetFileNameForAddress
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
3f16c8615c
[NTOS:IO] Check RtlCreateUnicodeString return value when initializing PnP services
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
24a4e12a76
[NTOS:IO] Check RtlAnsiStringToUnicodeString return value when initializing Arc names
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
293f823053
[NTOS:IO] Check RtlAnsiStringToUnicodeString return value when initializing ramdisk
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
e961958823
[NSLOOKUP] Check WSAStartup return value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
6bf64780e4
[NET] Properly check return value of EnumServicesStatusW on first call
2021-06-28 10:20:57 +02:00
Jérôme Gardou
5aafeb473f
[FLTMC] Do not ignore failures of some functions
...
Also reduce use of magic values.
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
46394ab80d
[RTL] In RtlReleasePrivilege, raise exception if restoring old privileges fails
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
fb9ebe17bf
[RTL] When taking system volume ownership, assert that we succeeded to restore privileges
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
9c5b39e25a
[RTL] Check and cascade down RtlGUIDFromString value
...
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
900b6a5d56
[FREELDR] Check HwInterrupt return value
...
_Must_inspect_result_ is there for a reason
CORE-17637
2021-06-28 10:20:57 +02:00
Jérôme Gardou
59cddd15e2
[NTOS:MM] Implement MmFlushImageSection(MmFlushForDelete)
...
CORE-17544
2021-06-25 10:28:51 +02:00
Jérôme Gardou
b3e9c89725
[NTOS:MM] Simplify refcounting when adding/deleting a page in a shared segment
...
CORE-17544
2021-06-25 10:28:51 +02:00
Jérôme Gardou
bec42b6530
[NTOS:MM] Do not call ExAllocatePool* with PFN lock acquired
...
Unsurprisingly, it actually might acquire it
2021-06-25 10:28:51 +02:00
Jérôme Gardou
aa2697df2d
[NTOSKRNL] Enforce -fno-common on GCC & CLang builds
2021-06-24 18:48:31 +02:00
Jérôme Gardou
c6e9fea844
[NTOSKRNL] Deduplicate some symbols
2021-06-24 18:48:31 +02:00
Jérôme Gardou
1c5ce8d11c
[NTOS:MM] Fix-up call site of traced PFNs when serving a page fault
2021-06-24 18:48:31 +02:00
Jérôme Gardou
146337cc50
[NTOS:MM] Save caller address when tracing PFNs
2021-06-24 18:48:31 +02:00
Jérôme Gardou
aae161d061
[CMD] Do not use an intermediate buffer when reading lines from batch files
...
This is easier on the heap and improves cmd:batch winetest nicely
2021-06-24 15:03:36 +02:00
Jérôme Gardou
5ca83e516c
[CMD] Improve performance a bit
...
Do not use custom alloc/free functions by default.
Do not free resources at process exit.
- You're doing it brick by brick while the OS & CRT do that with a bulldozer better than you do.
2021-06-24 15:03:36 +02:00
Jérôme Gardou
c8ce0cc434
[NTOS:MM] Fix one occurrence of MiDeletePte instead of MiDeletePde
2021-06-22 12:05:20 +02:00
Jérôme Gardou
41de1bd724
[NTOS:KE] Do not allow waiting at IRQL >= DISPATCH_LEVEL when providing a timeout in KeWaitForMultipleObjects
...
CORE-6473
2021-06-21 11:42:01 +02:00
Jérôme Gardou
27fcfe66a2
[TCPIP][IP] Use an ERESOURCE as mutex for address files & connection end points
...
Spinlocks are not reentrant (and this is done a lot), using them forces us to have
an horrible hack in the kernel, which unschedules threads which are at DISPATCH_LEVEL
thus allowing another thread to take ownership of the spinlock while the unscheduled
thread should already hold it.
CORE-6473
2021-06-21 11:42:01 +02:00
Jérôme Gardou
e70df4c633
[WIN32K:ENG] In EngLockDriverObj, properly return NULL when locking failed
...
CORE-15958
2021-06-09 18:27:12 +02:00
Jérôme Gardou
afc27ab1aa
[NTOS:MM] Handle PT references for page table faults in MmAccessFault
...
Idea from Timo Kreuzer
2021-06-09 11:27:18 +02:00
Jérôme Gardou
c7e09061ca
[NTOS:MM] Get rid of MiQueryPageTableReferences
2021-06-09 11:27:18 +02:00
Jérôme Gardou
678923bf4b
[NTOS:MM] In MiMakePdeExistAndValid, do not overly check PDE validity
...
It's "okay" to not #ifdef, but it's useless and confusing.
2021-06-09 11:27:18 +02:00
Jérôme Gardou
c8fb3f7514
[NTOS:MM] Implement proper refcounting of page tables on amd64
...
CORE-17552
2021-06-09 11:27:18 +02:00
Jérôme Gardou
3aa346c21f
[NTOS:MM] Make MiIsEntireRangeCommitted 64-bits aware
2021-06-09 11:27:18 +02:00