Jérôme Gardou
727e73f253
|NTOS:MM] Simplify some code
2021-02-03 09:41:23 +01:00
Jérôme Gardou
48e1c8593f
[NTOS:PO] Flush dirty pages after flushing volumes
2021-02-03 09:41:23 +01:00
Jérôme Gardou
5949d5095d
[NTOS:CC][NTOS:MM] Try respecting ValidDataLength
2021-02-03 09:41:23 +01:00
Jérôme Gardou
bdb73edab7
[NTOS:CC] Flush the whole VACB
...
Let Mm know what it has to do.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
804f5a41ed
[NTOS:CC] Improve trace messages
2021-02-03 09:41:23 +01:00
Jérôme Gardou
20fe42c9e9
[NTOS:CC] Simplify CcFlushCache implementation
2021-02-03 09:41:23 +01:00
Jérôme Gardou
9b6240ee03
[NTOS:CC] Get rid of ROS_VACB:Valid
2021-02-03 09:41:23 +01:00
Jérôme Gardou
e46f1a9af3
[NTOS:MM] Disable APC while performing Paged Read
2021-02-03 09:41:23 +01:00
Jérôme Gardou
02167f2fb3
[NTOS:CC] Properly return the public BCBs
2021-02-03 09:41:23 +01:00
Jérôme Gardou
33cde28312
[NTOS:CC] Simplify CcRosDeleteFileCache
2021-02-03 09:41:23 +01:00
Jérôme Gardou
a9193b5cc2
[NTOS:CC] Remove dead code
2021-02-03 09:41:23 +01:00
Jérôme Gardou
8ed15a49a7
[NTOS:MM] Fix a race
2021-02-03 09:41:23 +01:00
Jérôme Gardou
11eee4eeec
[NTOS:MM] Check that we don't add rmap for NULL process
2021-02-03 09:41:23 +01:00
Jérôme Gardou
caf89b9582
[NTOS:MM] Fix a race condition when unmapping sections views
2021-02-03 09:41:23 +01:00
Jérôme Gardou
57ee31ee33
[NTOS:CC] Perform sanity checks before doing anything else
2021-02-03 09:41:23 +01:00
Jérôme Gardou
cff3c399c6
[NTOS:MM] Fix input validation/correction in MmMapViewInSystemSpace
2021-02-03 09:41:23 +01:00
Jérôme Gardou
8287a098b9
[NTOS:CC] Fix potnetial use-after-free
2021-02-03 09:41:23 +01:00
Jérôme Gardou
358d06c47c
[NTOS:CC] Always honor WriteThrough parameter in CcUnpinRepinnedBcb
2021-02-03 09:41:23 +01:00
Jérôme Gardou
1505abbc09
[NTOS:CC] Do not write behind concurrently the same file
2021-02-03 09:41:23 +01:00
Jérôme Gardou
347a4f146b
[NTOS] Loop again and again until the whole cache is empty when sutting down
2021-02-03 09:41:23 +01:00
Jérôme Gardou
addf824d87
[NTOS:MM] Keep image maps & file maps coherent at the time of creating the image map
2021-02-03 09:41:23 +01:00
Jérôme Gardou
543112008a
Fix physical memory section creation
2021-02-03 09:41:22 +01:00
Jérôme Gardou
91f6fa0259
Disable CcScheduleReadAhead call
2021-02-03 09:41:22 +01:00
Jérôme Gardou
6d97d8d2e1
[NTOS:CC] Fix some tests, complain where the current implementation won't let us do the right thing
2021-02-03 09:41:22 +01:00
Jérôme Gardou
674ab3dce3
[NTOS:MM] Remove a check for now
2021-02-03 09:41:22 +01:00
Jérôme Gardou
1f796267bc
[NTOS:MM] Do not reference the section when mapping it.
...
Referencing the segment is enough.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
3c2b1bf59b
[NTOS:MM] Save the dirty bit when sharing a segment page
2021-02-03 09:41:22 +01:00
Jérôme Gardou
3141668724
[NTOS:MM] Various fixes.
...
Fix MmFlushImageSection behaviour
Remove an invalid ASSERT
2021-02-03 09:41:22 +01:00
Jérôme Gardou
30f71c7fc0
[NTOS] Zero data unconditionally after segment end, unless section is created with SEC_RESERVE
...
Use a SEC_RESERVE section in Cc
2021-02-03 09:41:22 +01:00
Jérôme Gardou
a52bc6d179
[NTOS:CC] Restore read-ahead behaviour in CcCopyRead
2021-02-03 09:41:22 +01:00
Jérôme Gardou
4441b1cd44
[NTOS:CC] Fix some tests for CcCopyRead and CcCopyWrite
...
Most importantly: raise the right status when provided an invalid buffer.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
aab24ed1b1
[NTOS:MM] Have the legacy Mm be less greedy about the number of pages it wants
2021-02-03 09:41:22 +01:00
Jérôme Gardou
fb07802956
[NTOS:MM] Make the situation about dirty pages in image map a bit clearer
2021-02-03 09:41:22 +01:00
Jérôme Gardou
cd23d6e19a
[NTOS:CC] Honor FO_WRITE_THROUGH flag in CcCopyWrite and fix it in CcZeroData
2021-02-03 09:41:22 +01:00
Jérôme Gardou
f8aa14ce4e
[NTOS:CC] Acquire file for flush when flushing if necessary
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d9f7459bb1
[NTOS:MM] Fix file object bad referencing
2021-02-03 09:41:22 +01:00
Jérôme Gardou
2d3454a809
[NTOS:IO] VFAT sucks less now
2021-02-03 09:41:22 +01:00
Jérôme Gardou
cbfc04157d
[NTOS:CC] File size check fix
2021-02-03 09:41:22 +01:00
Jérôme Gardou
e39fc52d25
[NTOS/MM] Set FSRTL_MOD_WRITE_TOP_LEVEL_IRP top-level IRP when paging-out
2021-02-03 09:41:22 +01:00
Jérôme Gardou
f114209782
[NTOS/MM] Do not zero out the tail of the segment if the mapping is not an image
2021-02-03 09:41:22 +01:00
Jérôme Gardou
7d70af61e8
[NTOS:MM] Acquire file lock when creating section
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d2fa434cb7
[NTOSKRNL] Address issues raised in PR 3361 review
2021-02-03 09:41:22 +01:00
Jérôme Gardou
70c62aa2c9
[NTOS:CC] Fix Vacb size usage & check
2021-02-03 09:41:22 +01:00
Jérôme Gardou
c74cbf0c0b
[NTOS/CC] Be more precise when notifying Mm about dirty pages
2021-02-03 09:41:22 +01:00
Jérôme Gardou
c295d6b229
[NTOS:CC] Fix releasing VACB when an exception is raised in CcZeroData & CcCopyWrite
2021-02-03 09:41:22 +01:00
Jérôme Gardou
7f47f03296
[NTOS:CC] Rewrite the non-cached path of CcZeroData
2021-02-03 09:41:22 +01:00
Jérôme Gardou
36e18aab35
[NTOS:CC] Remove unused functions
2021-02-03 09:41:22 +01:00
Jérôme Gardou
7dab3583cc
[NTOS/MM] Force flushing when the page is dirtified in user mode
2021-02-03 09:41:22 +01:00
Jérôme Gardou
91edefa11e
[NTOS:MM] Do not limit ourselves in reading or writing the file
2021-02-03 09:41:22 +01:00
Jérôme Gardou
774a4c703f
[NTOS/MM] Misc fixes
...
Purge data section object before creating an image mapping
Zero-out the tail of the page after reading from file
Properly map page as read-only when paging-in a COW memory map.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
0933337404
[NTOS/MM] Do not dirtify section pages for system-space maps
...
Cc does it for itself.
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d440434a8e
[NTOS/MM] Do not error when FS returns STATUS_END_OF_FILE for paged read.
...
Also remove a seemingly invalid ASSERT
2021-02-03 09:41:22 +01:00
Jérôme Gardou
b46173edaf
[NTOS/MM] DO not assert when being passed invalid parameters in MmCreateSection
2021-02-03 09:41:22 +01:00
Jérôme Gardou
ba49c39041
[NTOS/MM] Assert there are no RMAP left before freeing the page
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d932bdb950
[NTOS:MM] Fix locking when paging out
2021-02-03 09:41:22 +01:00
Jérôme Gardou
d8cdb89fb0
[NTOSKRNL] Overhaul Cc and Mm relationship
...
Previously, when creating a file section, Mm requested Cc to cache the file, then Cc would request pages from Mm, then Mm would request them back to serve its file-mapping role
Now, Mm does it all by itself. If file cahcing is requested by the FS driver, then Cc creates a file mapping and uses that to serve its purpose.
This is a rewrite of Cc
2021-02-03 09:41:22 +01:00
Jérôme Gardou
e4047d1521
[NTOS/MM] Introduce MmArePagesResident and MmMakePagesResident
2021-02-03 09:41:22 +01:00
Jérôme Gardou
f1631b44e1
[NTOS/MM] Introduce MmMapViewInSystemSpaceEx
2021-02-03 09:41:22 +01:00
Jérôme Gardou
4f6fd6c42b
[NTOS/MM] Infer that the Memory Area is an image mapping from its VAD node
2021-02-03 09:41:21 +01:00
Jérôme Gardou
c3bd70cfd1
[NTOSKRNL/MM] Fix a few wine tests
2021-02-03 09:41:21 +01:00
Jérôme Gardou
4abda863ce
[NTOSKRNL/MM] Reduce use of MiIsRosSectionObject
2021-02-03 09:41:21 +01:00
Jérôme Gardou
b7d988ae5b
[NTOSKRNL] Get rid of MM_ROS_SECTION_OBJECT
2021-02-03 09:41:21 +01:00
Jérôme Gardou
8b98ff66ea
[NTOSKRNL] Store File Object in the segment instead of Section object
2021-02-03 09:41:21 +01:00
Jérôme Gardou
e980efebd4
[NTOSKRNL] Store the MM_IMAGE_SECTION_OBJECT pointer in SECTION::Segment
2021-02-03 09:41:21 +01:00
Jérôme Gardou
c6a87f28bf
[NTOSKRNL] Get rid of MEMORY_AREA::Protect
...
Use the VAD node instead
2021-02-03 09:41:21 +01:00
Jérôme Gardou
c9f924940a
[NTOSKRNL/MM] Get rid of useless members of MEMORY_AREA struct
2021-02-03 09:41:21 +01:00
Jérôme Gardou
defbf63416
[NTOSKRNL] Use PSECTION struct where possible
2021-02-03 09:41:21 +01:00
Jérôme Gardou
462d9a0974
[NTOSKRNL] Unload the cargo: We only use tiny bits of "NEWCC"
2021-02-03 09:41:21 +01:00
Jérôme Gardou
25722e647e
[NTOSKRNL] Embed a SECTION struct inside MM_ROS_SECTION_OBJECT
2021-02-03 09:41:21 +01:00
Jérôme Gardou
c3ec5d801c
[NTOSKRNL] Disable more unused code
2021-02-03 09:41:21 +01:00
Jérôme Gardou
10ac04ff6e
[NTOSKRNL] Get rid of ROS_SECTION_OBJECT::AllocationAttributes in favor of MM_SECTION_FLAGS
2021-02-03 09:41:21 +01:00
Jérôme Gardou
819406ac97
[NTOSKRNL] Get rid of pagefile-backed sections support in legacy Mm
2021-02-03 09:41:21 +01:00
Jérôme Gardou
7afecee5eb
[NTOSKRNL] Rename MM_ROS_SECTION_OBJECT:SectionPageProtection to InitialPageProtection
2021-02-03 09:41:21 +01:00
Jérôme Gardou
54c760574b
[NTOSKRNL] Rename MM_ROS_SECTION_OBJECT:MaximumSize to SizeOfSection
...
For consistency with the SECTION struct
2021-02-03 09:41:21 +01:00
Jérôme Gardou
073ec9b0d4
[NTOSKRNL][NDK] Get rid of SECTION_OBJECT typedef
...
We will use the more recent SECTION (already used in ARM3) and this will avoid confusions
2021-02-03 09:41:21 +01:00
Jérôme Gardou
9b74e5ed4f
[NTOSKRNL] Do not compile unused code
2021-02-03 09:41:21 +01:00
Jérôme Gardou
857dd4ae36
[NTOS:MM] Properly handle the 1-offset of paging files
2021-02-02 10:17:28 +01:00
George Bișoc
1903b568b6
[NTOS:SE] Implement SECURITY_TOKEN_PROXY_DATA, SECURITY_TOKEN_AUDIT_D… ( #3432 )
...
ProxyData and AuditData are pointers to an arbitrary data, which instead, they should point to their respective data structures. This serves as preparation for SepFreeProxyData and SepCopyProxyData functions implementations in the future (regarding the proxy data stuff specifically).
For further details:
https://www.vergiliusproject.com/kernels/x86/Windows%202003/SP2/_TOKEN
https://www.nirsoft.net/kernel_struct/vista/SECURITY_TOKEN_AUDIT_DATA.html
https://www.nirsoft.net/kernel_struct/vista/SECURITY_TOKEN_PROXY_DATA.html
https://www.nirsoft.net/kernel_struct/vista/PROXY_CLASS.html
2021-02-02 01:55:42 +03:00
Jérôme Gardou
158235bdd5
[NTOS:KE] Fix EIP only when the breakpoint is a break
...
Fixes ntdll:exception winetest crash
ROSTESTS-80
2021-02-01 16:39:39 +01:00
Hervé Poussineau
794f15e45f
[NTOSKRNL] Fix link with GCC x64
...
KeLowerIrql/KeRaiseIrqlToDpcLevel/KfRaiseIrql are defined as FORCEINLINE in ntoskrnl/ke/amd64/irql.c
Use KxLowerIrql/KxRaiseIrqlToDpcLevel/KxRaiseIrql instead, which call their respective Ke*/Kf* counterparts.
2021-01-28 23:10:01 +01:00
Hervé Poussineau
9d110db433
[NTOS:KDBG] Support KDBG on x64
2021-01-28 20:44:21 +01:00
Hervé Poussineau
ae4ce99e00
[ASM x64] Fix usage of macro .allocstack
...
.allocstack only accepts one 'size' parameter."
2021-01-28 20:31:16 +01:00
Victor Perevertkin
91fceab36e
[NTOS:IO][NTOS:PNP] Add PiActionAddBootDevices device action
...
During the boot process, it makes possible to initalize the driver's
devices right after the driver is loaded. Moreover, this way one can be
sure that all critical devices are initialized before the
IopMarkBootPartition call (because we explicitly call the driver's
AddDevice routine now, after each driver is loaded)
CORE-7826
2021-01-27 05:15:16 +03:00
Victor Perevertkin
798fc13b48
[NTOS:PNP] Implement NT5.2-like DEVICE_NODE state management
...
- Use DeviceNode->State field and its values, instead of
DeviceNode->Flags for tracking current node state
- Change DNF_* flags to the ones compatible with Windows XP+
- Simplify state changes for device nodes and encapsulate all the logic
inside the PiDevNodeStateMachine routine. This makes the ground for
future improvements in the device removal sequence and
resource management
- Now values inside DeviceNode->State and ->Flags are compatible with
the windbg !devnode macro and can be tracked using it
- BUGFIX: fixed cases where IRP_MN_START_DEVICE or
IRP_MN_QUERY_DEVICE_RELATIONS may be sent to a device after a
IRP_MN_REMOVE_DEVICE
CORE-7826
2021-01-27 05:15:15 +03:00
Victor Perevertkin
b704292808
[NTOS:IO] Add more enumeration requests during the boot process
...
This is to ensure that all needed devices are initialized during the
early boot
CORE-7826
2021-01-27 05:15:15 +03:00
Jérôme Gardou
f63401060d
[NTOS:MM] Fix compilation for amd64 port.
...
Addendum to 0919324772
2021-01-22 10:34:20 +01:00
Jérôme Gardou
0919324772
[NTOS:MM] Get rid of "compatibility layer" for hyper space mappings
...
Let's call that a bug layer instead.
2021-01-22 09:33:06 +01:00
Jérôme Gardou
57e8684bc6
[NTOS:MM] Allow "creating" a PDE in legacy Mm for foreign process
2021-01-22 09:32:36 +01:00
Alex Henrie
35f3034879
[NDK] "Reserved" member in SYSTEM_PROCESSOR_INFORMATION is "MaximumProcessors" for Windows 8+ ( #3421 )
...
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
2021-01-09 23:15:36 +01:00
Hervé Poussineau
ff7035d940
[ASM x64] Change ; by /* */ for comments
...
Syntax with semi-colon is not supported by gas.
2021-01-07 21:12:11 +01:00
Hervé Poussineau
e581123c35
[NTOSKRNL] Correctly use SEH2 macros (fixes GCC x64 compilation)
2021-01-05 19:24:23 +01:00
Jérôme Gardou
c8d07514c8
[CMAKE] Fix GCC -fstack-protector usage
2021-01-05 13:38:57 +01:00
Victor Perevertkin
e5254974d2
[NTOS:IO] Start loading drivers from the disk only after SystemRoot is initialized
...
Add another PnPBootDriversInitialized variable to indicate a point where
both disk subsystem and SystemRoot symlink are initialized, and use it
in a PiCallDriverAddDevice call.
2021-01-04 16:50:33 +03:00
Victor Perevertkin
c4c0585f96
[NTOS:IO][NTOS:PNP] Implement PiCallDriverAddDevice
...
- Move the driver's name obtaining logic into the IopGetDriverNames
function
- Create a new PiCallDriverAddDevice instead of PipCallDriverAddDevice
and move it to pnpmgr/devaction.c file. Move around all its internal
helpers too
- Support a proper Windows-compatible driver loading order for a PDO
(lower filters, main service, upper filters, etc.)
- Set a correct Problem for the DeviceNode, in case of an error during
driver loading
- Check the Start Type for all drivers before loading
- Do not try to load drivers during the early boot stage when there is
no disk subsystem initialized
2021-01-04 16:50:33 +03:00
Victor Perevertkin
4c95339da0
[NTOS:IO] Refactoring of the driver initialization code (2)
...
- Do not hold the IopDriverLoadResource while trying to reference a
driver object (but still acquire it when we actually need to load a
driver)
- Change IopLoadDriver and IopInitializeDriverModule to use registry
handle instead of a service name string and/or full registry path
- Do not try to reference a driver object inside IopLoadDriver. It's
supposed to be done before the function call
2021-01-04 16:50:33 +03:00
Victor Perevertkin
a6a3aa0f0d
[NTOS:IO] Refactor IopLoadUnloadDriver
...
- Split IopLoadUnloadDriver into IopLoadDriver and calling DriverUnload
- Schedule the worker for (un)loading driver in a separate routine
(IopDoLoadUnloadDriver) this allows IopLoadDriver to be called
separately (if we are sure that we're in the system process)
2021-01-04 16:50:32 +03:00
Victor Perevertkin
e18a32df3a
[NTOS:IO] Refactoring of the driver initialization code
...
- Remove IopCreateDriver and put its code into IoCreateDriver and
IopInitializeDriverModule. It's hard to extract a meaningful common
part from it
- Refactor IopInitializeDriverModule. Extend and put the DriverName
generation logic into it. Now this function frees the ModuleObject in
case of failure and returns STATUS_FAILED_DRIVER_ENTRY in case of
DriverInit failure (will be used later)
2021-01-04 16:50:32 +03:00
Victor Perevertkin
6f0e37b042
[NTOS:PNP][NTOS:IO] Do not create a device object + node on every driver load
...
- Remove the usage of IopCreateDeviceNode and change it to
PipAllocateDeviceNode where required
2021-01-04 16:50:32 +03:00
Hermès Bélusca-Maïto
b570fac18b
Happy New Year 2021 to the ReactOS Community!!
...
⚛️ 🍾 🥳 🎆 ☢️
2021-01-01 00:00:00 +01:00
Stanislav Motylkov
f234cb6e59
[NTOS:CM] Do not create ProcessorNameString value if there is no Brand String
...
If the CPU does support CPUID instruction but does not have the Brand String,
the legacy name detection should be performed either in CIM_Processor (WMI),
in the Processor device driver, or in the application itself.
The deleted Intel CPU name detection code can go to the WMI at some point.
In fact Windows XP and 2003 kernels do not have any strings of that kind.
This effectively reverts the hack committed 6 years ago in 7a985425
(r63798)
that was intended to workaround CORE-7952.
CORE-17413
2020-12-30 19:38:41 +03:00
Victor Perevertkin
8ee88d3bd5
[NTOS:PNP] Send removal IRPs to a file system device object for mounted devices
...
If a DeviceObject has VPB attached, it should be treated in a special way
CORE-16106
2020-12-27 18:40:33 +03:00
Hermès Bélusca-Maïto
a748350fc9
[NTOS:IO] Fail if the driver name passed to NtLoadDriver() is an empty string.
...
Otherwise an assertion on the driver name is hit later on.
Can be reproduced by calling NtLoadDriver with a valid UNICODE_STRING
of Length == 0.
2020-12-27 00:52:00 +01:00
Hermès Bélusca-Maïto
44511f0809
[NTOS:IO] Minor formatting only.
...
Making IopLoadUnloadDriver() looking similar to IopUnloadDriver().
2020-12-27 00:51:59 +01:00
Jérôme Gardou
bd0445dbf2
[NTOS/FSRTL] Implement FsRtlAcquireToCreateMappedSection using filter callbacks
2020-12-22 11:37:53 +01:00
Jérôme Gardou
ef4c7ae978
[NTOS:IO] Validate input parameters in NtQueryDirectoryFile
...
It turns out this is not the job of the FS driver
2020-12-22 11:06:38 +01:00
Jérôme Gardou
1d1dba51db
[NTOS:IO] Do not set Shared property of the file if we are failing in IoCheckShareAccess
2020-12-22 11:05:00 +01:00
Jérôme Gardou
a6c0af2e21
[NTOS:IO] Do not pass bogus file offset to the FS in NtReadFile & NtWriteFile
2020-12-22 11:02:33 +01:00
Jérôme Gardou
96ae15ac4b
[NTOS:MM] Fix more 64 bit arithmetics
2020-12-15 10:08:25 +01:00
Jérôme Gardou
abcbd44641
[NTOS:MM] Fix passing section size to MiCreatePagingFileMap & fix maximum size check
...
Also return the right status instead of stupidly asserting when failing to allocate memory.
2020-12-14 18:22:18 +01:00
Jérôme Gardou
8631e75837
[NTOS:CC] Acquire the master lock after freeing the VACB in CcRosFlushDirtyPages
...
Fixes a random ASSERT
2020-12-09 18:06:42 +01:00
Jérôme Gardou
3d4cf8d2d8
[NTOS/FSRTL] Fix MCB tests
...
- Fix behaviour when adding or removing entries in the middle of an existing run
- Do not touch output parameters when failing, caller might rely on this.
2020-12-08 11:48:00 +01:00
Victor Perevertkin
016dc28793
[NTOS:CONFIG] Release the lock in a failure case in CmLoadKey
...
This is a workaround, the real issue is still not resolved
CORE-17263
2020-12-08 13:44:27 +03:00
Hermès Bélusca-Maïto
3d980c4a2c
[NTOS:FSTUB] Addendum to 29615fee
and 8d2fe541
: Further remove useless casts.
...
Also, fix the MBR checksum calculation (missing ~CheckSum + 1), to fix
the calculation in accordance with how MS calculates the MBR checksums
(and what we do as well in
https://github.com/reactos/reactos/blob/master/base/setup/lib/utils/partlist.c#L1581
https://github.com/reactos/reactos/blob/master/boot/freeldr/freeldr/arch/i386/hwdisk.c#L291
).
2020-12-07 22:52:42 +01:00
Hermès Bélusca-Maïto
fd053237cb
[NTOS:FSTUB] Minor formatting; put the PAGED_CODE() macros in evidence (instead of being lost in the declarations).
2020-12-07 22:51:15 +01:00
Victor Perevertkin
29615feeb6
[FSTUB] Fix bugs from 8d2fe54188
...
The buffer is now PUCHAR or PVOID everywhere
2020-12-07 19:50:51 +03:00
Victor Perevertkin
8d2fe54188
[FSTUB] Fix out of bounds access in IoReadDiskSignature
...
- Convert PARTITION_TABLE_OFFSET to the number of bytes instead of
(number of bytes) / 2. This avoids many confusing casts
- Use a cache aligned buffer for MBR
2020-12-07 14:43:34 +03:00
Victor Perevertkin
582ca68696
[NTOS:PNP] Improve and refactor PnP notifications
...
- BUGFIX: do not call IoGetRelatedTargetDevice while guarded mutex is acquired
(the function issues an APC, but they are disabled inside a critical section)
- BUGFIX: only the beginning of a structure for GUID_PNP_CUSTOM_NOTIFICATION was copied and queued.
Just pass it as-is to a subscriber, without copying
- Don't convert event GUID to string, store and compare GUID struct itself
- Split IopNotifyPlugPlayNotification into 3 functions for each type of notification
(less stack usage and for future changes)
- Move initialization code for notifications into a separate routine
- Use separate lists and locks for every type of notification
- Put "TargetDeviceChange" notifications into their place inside DEVICE_NODE
2020-12-05 22:25:40 +03:00
Victor Perevertkin
e3198fb644
[NTOS:PNP] Check if APCs are enabled before waiting inside IopSynchronousCall
2020-12-05 22:25:39 +03:00
Victor Perevertkin
9eafb2971f
[NTOS:CONFIG] Comment out the assertion until fixed
...
CORE-17263
2020-12-05 22:17:08 +03:00
Jérôme Gardou
0db79d4aa9
[NTOSKRNL:FSRTL] Fix memory corruption when pruning tunnel cache
2020-12-04 16:08:14 +01:00
Thomas Faber
828d5fa93e
[NTOS:IO] Reduce stack usage in IopLoadServiceModule. CORE-17215
2020-11-27 12:44:35 +01:00
Thomas Faber
2858ff53ce
[NTOS:KD] Avoid large stack buffer in KdpPrint. CORE-17215
2020-11-27 10:31:45 +01:00
Thomas Faber
ae1d272add
[NTOS:PNP] Avoid recursion in IopTraverseDeviceTree(Node). CORE-17215
2020-11-27 10:31:41 +01:00
Hervé Poussineau
1a3c607f53
[NTOS:KD] Change the way we detect if exception if from KernelMode/UserMode
...
CORE-17381
2020-11-22 18:17:59 +01:00
Hervé Poussineau
44c6df4b27
[NTOS:KD] Correctly define previous mode when entering KDBG (addendum to 0c76bbfe98
)
2020-11-17 14:23:36 +01:00
Jérôme Gardou
9e7071e8fb
[NTOSKRNL] DO not disable optimisations when compiling with CLang
2020-11-16 16:58:10 +01:00
Jérôme Gardou
e00922a0fe
[NTOSKRNL] Link memcmp to the import lib when using CLang
...
CLang performs some optimisations on e.g. strcmp, but memcmp is not exported by ntoskrnl
2020-11-16 16:58:10 +01:00
Hervé Poussineau
d6d5caec7c
[NTOS:KD] Move some KDBG-specific variables to KDBG-specific file
2020-11-16 08:55:04 +01:00
Hervé Poussineau
0c76bbfe98
[NTOS:KD] Merge KdpReportExceptionStateChange() with kd64 version
2020-11-16 08:55:04 +01:00
Hervé Poussineau
baa47fa5e0
[NTOS:KD] Use a PCONTEXT instead of a PKTRAP_FRAME in KDBG
2020-11-16 08:55:03 +01:00
Hervé Poussineau
ba37323a62
[NTOS:KD] Move some declarations where they belong
2020-11-16 08:55:03 +01:00
Hervé Poussineau
67e9cc00b2
[NTOS:KD] Remove useless define
...
KdbEnterDebuggerException() is only called when KDBG is defined.
2020-11-16 08:55:03 +01:00
Hervé Poussineau
95faf65ebf
[NTOS:KD] Remove useless variables/members
...
Those where only set and never read.
2020-11-16 08:55:03 +01:00
Hervé Poussineau
8d3a395101
[NTOS:KD] Remove Bochs port debugging
...
You can use serial port debugging instead.
2020-11-16 08:55:03 +01:00
Hervé Poussineau
8a62f277d8
[NTOS:KD] Remove useless implementation of BREAKPOINT_PRINT in KdSystemDebugControl
...
This is (as expected) handled in KdpTrap(), which also calls KdpPrint().
2020-11-16 08:55:03 +01:00
Hervé Poussineau
1eda7d7e99
[NTOS:KD] Merge KdpReportCommandStringStateChange() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
6f7835d30c
[NTOS:KD] Merge KdpReportLoadSymbolsStateChange() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
e31be4ec25
[NTOS:KD] Merge KdEnableDebuggerWithLock()/KdDisableDebuggerWithLock() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
ebb6f29e69
[NTOS:KD] Merge KdEnterDebugger()/KdExitDebugger() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
81b184741d
[NTOS:KD] Remove useless uses of _WINKD_
2020-11-16 08:55:03 +01:00
Hervé Poussineau
329b9fa2fb
[NTOS:KD] Merge KdpReport() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
a8662c73a5
[NTOS:KD] Merge KdpTrap() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
5730394bd0
[NTOS:KD] Merge KdpPrintString()/KdpPromptString() with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
d5fe15e5e6
[NTOS:KD] Merge KdpStub with kd64 version
2020-11-16 08:55:03 +01:00
Hervé Poussineau
c2946ced92
[NTOS:KD] Remove some now useless tests on _WINKD_
2020-11-16 08:55:03 +01:00
Hervé Poussineau
660948ce6f
[NTOS:KD] Merge some more functions with kd64
...
Functions are KdIsThisAKdTrap, KdUpdateDataBlock, KdEnterDebugger,
KdExitDebugger, KdRefreshDebuggerNotPresent, KdDisableDebugger,
KdEnableDebuggerWithLock, KdEnableDebugger, KdSystemDebugControl
2020-11-16 08:55:03 +01:00
Hervé Poussineau
d0e2fada23
[NTOS:KD] Rename KdpEnterDebuggerException to KdpTrap + add KdpStub forwarder
...
This removes somes uses of _WINKD_ macro.
2020-11-16 08:55:02 +01:00
Hervé Poussineau
4d84c856ad
[NTOS:KD] Merge KdInitDebugger with kd64 version + move variable declarations to kd64/kddata.c
...
Remove now unused file kd/kdinit.c
2020-11-16 08:55:02 +01:00
Hervé Poussineau
777a2d94da
[NTOS:KD] Import KdpCallInitRoutine() into KdDebuggerInitialize1()
2020-11-16 08:55:02 +01:00
Hervé Poussineau
9b43a3a067
[NTOS:KD] Move implementation of banner display from each debug output type to common code
2020-11-16 08:55:02 +01:00