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
Hervé Poussineau
6025df33a5
[NTOS:KD] Make implementation of KdInitSystem more similar with the kd64 one
...
Move some kd initializations into KdDebuggerInitialize0() function.
2020-11-16 08:55:02 +01:00
Hervé Poussineau
f417a53743
[NTOS:KD] Compile all kd64 files in kdbg mode
2020-11-16 08:55:02 +01:00
Hervé Poussineau
e09554a06c
[NTOS:KD] Merge KdPowerTransition/KdChangeOption with kd64 version
2020-11-16 08:55:02 +01:00
Hervé Poussineau
453edbb5da
[NTOS:KD] Implement empty versions of KdDebuggerInitialize0/KdSendPacket/KdReceivePacket
...
Move KdDebuggerInitialize1 to common code.
Add #defines to local names to prevent clashes with kdcom.dll
2020-11-16 08:55:02 +01:00
Hervé Poussineau
b18529de28
[NTOS:KD] Merge KdPollBreakIn() with kd64 version
2020-11-16 08:55:02 +01:00
Hervé Poussineau
1bee6bb8f3
[NTOS:KD] Remove invalid configuration (not _WINKD_ on amd64)
...
This was not working, as the file ntoskrnl/kd/amd64/kd.c was non-existent.
2020-11-16 08:55:02 +01:00
Hervé Poussineau
458f4edfd5
[NTOS:KD] Remove 'support' for Pice. It was only setting a flag.
2020-11-16 08:55:02 +01:00
Hervé Poussineau
0e391eecd1
[NTOS:KD] Remove GDB stubs
...
drivers/base/kdgdb/ should be used instead.
2020-11-16 08:55:02 +01:00
Hervé Poussineau
083cf05f7b
[NTOS:KDBG] Remove useless file
2020-11-16 08:55:02 +01:00
Hervé Poussineau
129e009a2c
[NTOS:IO] Do not translate resources of type CmResourceTypeDevicePrivate
...
CmResourceTypeDevicePrivate resources are created the the bus driver, for its own later use,
when children devices will receive the IRP_MN_START_DEVICE.
Do not translate them, as they have no meaning outside bus driver.
2020-11-15 18:38:37 +01:00
Thomas Faber
507c442473
[NTOS:CM] Implement support for KeyValuePartialInformationAlign64. CORE-17358
2020-11-14 15:11:00 +01:00
Serge Gautherie
b910409a4a
[NTOS:KDBG] Add some missing OBJ_KERNEL_HANDLE
...
CORE-10207
2020-11-14 12:00:24 +01:00
Victor Perevertkin
d6ef8f97e9
[NTOS:PNP] Enumerate the device tree after loading boot drivers and HAL
2020-11-10 01:59:49 +03:00
Timo Kreuzer
e67b62251f
[NTOS:MM] Handle PXE/PPE gaps in MiDeleteVirtualAddresses
2020-11-07 20:16:41 +01:00
Timo Kreuzer
274bc4de1c
[NTOS:SE] Fix handling of relative security descriptors in SeQuerySecurityDescriptorInfo
2020-11-07 15:54:47 +01:00
Hermès Bélusca-Maïto
ce55fef1e5
[NTOS:EX] Move the C_ASSERT UUID_CACHED_VALUES_STRUCT.GuidInit to a better place, where the structure is defined.
2020-11-06 01:06:12 +01:00
Hermès Bélusca-Maïto
3c722e35b1
[CMD][SERVMAN][SHELL32][WINSPOOL][ROSAPPS][NTOS:PNP] Fix my build.
2020-11-06 01:06:11 +01:00
Victor Perevertkin
5c7ce4475e
[REACTOS] Cleanup INIT and some PAGE section allocations
...
- Change INIT_FUNCTION and INIT_SECTION to CODE_SEG("INIT") and DATA_SEG("INIT") respectively
- Remove INIT_FUNCTION from function prototypes
- Remove alloc_text pragma calls as they are not needed anymore
2020-11-02 21:45:31 +03:00
Victor Perevertkin
658f742c2d
[NDK][CMAKE] Introduce DATA_SEG and CODE_SEG macro
...
These are for putting code and data to non-default sections
At the same time, move INIT section attributes declaration to cmake files
2020-11-02 21:27:06 +03:00
Timo Kreuzer
17fa04f10b
[NTOS:MM:X64] Fix MM_WAIT_ENTRY on x64
2020-11-01 09:32:27 +01:00
Timo Kreuzer
d4b4cf7448
[NTOS:MM] Make sure PXEs/PPEs and PDEs are always MM_EXECUTE_READWRITE
...
This is required since the NX protection proagates from the highest level, enforcing NX on the entire range, independent of whether lower level P*Es have the bit set or not. It might be useful to add a platform specific constant to allow making page tables NX on architectures that have a different behavior.
2020-11-01 09:32:27 +01:00
Timo Kreuzer
d55811f160
[NTOS:MM:X64] Fix session space initialization on x64
2020-11-01 09:32:27 +01:00
Timo Kreuzer
9095dbf5a5
[NTOS:MM:X64] Implement MmCreatePageFileMapping and MmDeletePageFileMapping
2020-11-01 09:32:27 +01:00
Timo Kreuzer
8980850d56
[NTOS:MM:X64] Simplify and fix x64 mapping code
...
- Use demand-zero-ptes in MiGetPteForProcess
- Handle NoExecute in MiSetPteProtection
- Fix MmIsPageSwapEntry
- Fix MmGetPageFileMapping
- remove obsolete functions.
2020-11-01 09:32:27 +01:00
Timo Kreuzer
0726cfce10
[NTOS:MM:X64] Handle PPEs and PXEs as well in MmInitializeProcessAddressSpace()
...
But don't set up the PFNs for the initial process on x64, as these have already been set up.
2020-11-01 09:32:27 +01:00
Timo Kreuzer
48d1bd2c88
[NTOS:MM:X64] On x64 allocate a VAD for the shared user page
2020-11-01 09:32:27 +01:00
Timo Kreuzer
a5d47ff72b
[NTOS:MM:X64] On x64 reserve the address range between FFFF800000000000 and FFFFF68000000000 in MiInitSystemMemoryAreas()
2020-11-01 09:32:27 +01:00
Timo Kreuzer
a8ba58fbb0
[NTOS:MM:X64] Improve x64 Mm initialization
...
* Move MiBuildPfnDatabaseFromPageTables into MiBuildPfnDatabase
* Make sure to call MmInitializeProcessAddressSpace() from the x64 version of MiInitMachineDependent()
* Handle result of MmInitializeProcessAddressSpace in MiInitMachineDependent (Should do the same for x86)
* Remove obsolete x64 debug print
2020-11-01 09:32:27 +01:00
Serge Gautherie
81be201d98
[NTOS:CC] CcMdl*Complete(): Return if FastIO succeeded ( #3303 )
...
CORE-17342
2020-10-31 15:18:02 +01:00
Timo Kreuzer
bdd4d5d8d8
[NTOS:KE:X64] Set the exception frame as well in KiInitializeContextThread
2020-10-31 14:23:16 +01:00
Timo Kreuzer
f66a7e2e48
[NTOS:KE:X64] Zero out the context in KiDispatchException
2020-10-31 14:23:16 +01:00
Timo Kreuzer
637183a12c
[NTOS:KE:X64] Handle pending user APC on syscall exit (should be done on trap exit, too)
2020-10-31 14:23:16 +01:00
Timo Kreuzer
2a8c680dbe
[NTOS:KE:X64][NTDLL:X64] Implement KiUserExceptionDispatcher and fix KiDispatchExceptionToUser
2020-10-31 14:23:16 +01:00
Timo Kreuzer
1bfacf06f7
[NTOS:KE:X64] Zero out volatiles when returning from a system call
2020-10-31 14:23:16 +01:00
Timo Kreuzer
a016ccd117
[NTOS:KE:X64][ASM:X64] Fix delivery of APCs
...
- Deliver pending APCs on trap exit
- Pass the trapframe of KiApcInterrupt to KiDeliverApcs, not NULL.
- Fix parameter passing from KiSwapContext to KiSwapContextInternal and KiSwapContextResume, so that the ApcBypass parameter is not uninitialized
- Fix return value of KiSwapContextResume to correctly indicate whether we want to have APCs directly delivered or not (when there are non, or when delivery is suppressed)
2020-10-31 14:23:16 +01:00
Timo Kreuzer
fdc1261fb7
[NTOS:KE:X64][NTDLL:X64] Implement x64 version of user callback code
2020-10-31 14:23:16 +01:00
Timo Kreuzer
52d1bb5ec9
[NTOS:KE:X64] Simplify KiInitializeUserApc
2020-10-31 14:23:16 +01:00
Timo Kreuzer
aaa86d078e
[NTOS:KE:X64] Move KiInitializeUserApc to usercall.c
2020-10-31 14:23:16 +01:00
Timo Kreuzer
fbdff437fd
[NTOS:KE:X64] Implement flushing the GDI batch
2020-10-31 14:23:16 +01:00
Timo Kreuzer
c86c55ace7
[NTOS:KE:X64] Change the logic of KeSwitchKernelStack and friends to be standards conforming
...
The previous version (like the x86 one) used a combination of C and asm code, called from C code to switch the stack. This is problematic, since there is no guarantee what assumptions C code makes about the stack (i.e. it can place any kind of stack pointers into registers or on the stack itself.) The new algorithm returns back to the systemcall entry point in asm, which then calls KiConvertToGuiThread, which is also asm and calls KeSwitchKernelStack ...
2020-10-31 14:23:16 +01:00
Timo Kreuzer
18b1aafd82
[NTOS:KE:X64] Improve kernel stack switching on GUI system calls
...
To be 100% correct and not rely on assumptions, stack switching can only be done when all previous code - starting with the syscall entry point - is pure asm code, since we can't rely on the C compiler to not use stack addresses in a way that is not transparent. Therefore the new code uses the same mechanism as for normal system calls, returning the address of the asm function KiConvertToGuiThread, which is then called like an Nt* function would be called normally. KiConvertToGuiThread then allocated a new stack, switches to it (which is now fine, since all the code is asm), frees the old stack, calls PsConvertToGuiThread (which now will not try to allocate another stack, since we already have one) and then jumps into the middle of KiSystemCallEntry64, where the system call is handled again.
Also simplify KiSystemCallEntry64 a bit by copying the first parameters into the trap frame, avoiding to allocate additional stack space for the call to KiSystemCallHandler, which now overlaps with the space that is allocated for the Nt* function.
Finally fix the locations where r10 and r11 are stored, which is TrapFrame->Rcx and TrapFrame->EFlags, based on the situation in user mode.
2020-10-31 14:23:16 +01:00
Timo Kreuzer
a6732905b8
[NTOS:KE:X64] Implement KiConvertToGuiThread, KeSwitchKernelStack and support for win32k syscalls in KiSystemCallHandler
2020-10-31 14:23:16 +01:00
Timo Kreuzer
fe6752f852
[NTOS:KE:X64] Fix bugs in KeContextToTrapFrame and KeTrapFrameToContext
...
Set valid EFlags, the non-volatiles need to be taken from the exception frame, because the ones from the trap frame might not be set.
2020-10-31 14:23:16 +01:00
Timo Kreuzer
a662c6f180
[NTOS:KE:X64] Silence KiRundownThread, it has nothing to do
2020-10-31 14:23:16 +01:00
Timo Kreuzer
eda01e5be7
[NTOS:KE:X64] Fix KiWriteSystemTime
2020-10-31 14:23:16 +01:00
Timo Kreuzer
8ec888487a
[ASM:X64] ASSERT that interrupts are enabled, when returning to user mode
2020-10-31 14:23:16 +01:00
Jérôme Gardou
f26754e6dd
[NTOSKRNL] Completely disable optimizations when using GDB
2020-10-21 13:11:20 +02:00
Jérôme Gardou
15dd31377a
Revert "[NTOS/MM] Initialize process Working set and start implementing adding entries to it"
...
This reverts commit 5abc016401
.
Not ready for prime time
2020-10-20 15:56:53 +02:00
Jérôme Gardou
1c528cbf84
Revert "[NTOS/MM]
...
- Fix PFNs tracing
- Add private pages to the process working set"
This reverts commit 4c5351bf55
.
Not ready for prime time
2020-10-20 15:56:21 +02:00
Jérôme Gardou
4c5351bf55
[NTOS/MM]
...
- Fix PFNs tracing
- Add private pages to the process working set
2020-10-20 15:20:59 +02:00
Jérôme Gardou
5abc016401
[NTOS/MM] Initialize process Working set and start implementing adding entries to it
2020-10-20 15:20:59 +02:00
Serge Gautherie
90a6086f17
[NTOSKRNL] include/config.h: Sync it to current code ( #3263 )
...
* SERIALIZE_DBGPRINT: Removed on c15e04c
(r18078).
* ENABLE_VALIDATE_POOL: Removed on 5899e14
(r42249).
* TAG_STATISTICS_TRACKING: Removed on 5899e14
(r42249).
* POOL_DEBUG_APIS: Removed on 5899e14
(r42249).
* R_RZ: Removed on 7d21cf7
(r48999).
* R_STACK: Removed on 7d21cf7
(r48999).
* WHOLE_PAGE_ALLOCATIONS: Removed on b431563
(r17306).
+
* _GLOBAL_PAGES_ARE_AWESOME_: Move it here.
2020-10-17 18:09:11 +02:00
Hermès Bélusca-Maïto
bd2a40d57b
[NTOS:IO] Some fixes for IoRaiseHardError(). ( #3302 )
...
CORE-14037
- Fix buggy retrieval of the current calling Irp->Tail.Overlay.Thread.
- The 4th argument (KernelRoutine) to the KeInitializeApc() is **NOT**
optional; however its 5th argument (RundownRoutine) is.
So use the mandatory routine for freeing the allocated APC instead.
We don't use the rundown routine yet.
- Check whether the ExAllocatePoolWithTag() call failed or not before
queueing the allocated APC.
2020-10-17 16:13:05 +02:00
Serge Gautherie
7790670dd8
[NTOS:EX] ExUuidCreate(): Correctly fill Uuid->Data4
...
ROSTESTS-359
Co-authored-by: Nguyen Trung Khanh <nguyentrungkhanh97@gmail.com>
2020-10-17 15:00:19 +02:00
Thomas Faber
6b3f309a08
[NTOS] Consistently use MUTANT_INCREMENT.
...
Spotted by Hermès.
2020-10-16 16:09:54 +02:00
Thomas Faber
ba9bf73d48
[NTOS:MM] Acquire PsLoadedModuleResource when walking PsLoadedModuleList. CORE-16449
2020-10-15 14:49:20 +02:00
Thomas Faber
a30edc324e
[NTOS:MM] Acquire MmSystemLoadLock in MiFindInitializationCode. CORE-16449
...
We might otherwise free the INIT section for an image that's in the
process of being loaded by Mm.
2020-10-15 14:49:11 +02:00
Dmitry Borisov
c464b02c90
[NTOS:PNP] Install mouse driver on NEC PC-98 series ( #3173 )
...
The current implementation of device tree enumeration does not distinguish
between possible identifier strings. This change is not a hack,
NT 5.2 still creates a new device node for this hardware ID.
The entire function should be rewritten to match Windows implementation.
2020-10-10 16:24:17 +03:00
Thomas Faber
ef1c726621
[NTOS:MM] Print debugging information in case CORE-16449 happens.
2020-10-08 08:59:46 +02:00
Thomas Faber
e57a59a60a
[NTOS:MM] Fail on SizeOfRawData overflow. CORE-17284
...
Fixes the corresponding tests in ntdll_apitest:NtMapViewOfSection.
Also add a TODO for the remaining test failures.
2020-10-03 13:20:25 +02:00
Thomas Faber
b957af4b6b
[NTOS:MM] VirtualSize overrides SizeOfRawData when mapping PE files. CORE-17284
...
This fixes the related failures in ntdll_apitest:NtMapViewOfSection
as well as loading of OrgPlayer's DragDrop.ocx.
2020-10-03 13:13:35 +02:00
Timo Kreuzer
3d17a7590d
[NTOS:MM] Fix paged pool initialization on x64
2020-10-01 11:24:42 +02:00
Timo Kreuzer
f2e3e8a1eb
[NTOS] Remove an old hack
2020-09-28 00:27:30 +02:00
Timo Kreuzer
d74037b666
[NTOS:PS] Fix size handling in ProcessDeviceMap
...
If you want to know the details, browse history or use git blame.
2020-09-28 00:24:53 +02:00
Victor Perevertkin
d01518da7c
[XDK] Add definitions required for newer storage class drivers (cdrom)
...
That introduced some warnings in the current code which were corrected as well
CORE-17129
2020-09-24 22:30:52 +03:00
Victor Perevertkin
f7c58468f1
[XDK] Move UNREACHABLE macro definition to ntbasedef.h
2020-09-24 05:35:43 +03:00
Timo Kreuzer
cb22d5f697
[NTOS:PS] On x64 don't fail in NtSetInformationProcess with ProcessUserModeIOPL information class, instead just don't do anything.
...
For NT6+ appcompat setting return STATUS_NOT_IMPLEMENTED
2020-09-20 23:08:17 +02:00
Timo Kreuzer
26484eea9f
[NTOS:MM] Fix MiSubsectionPteToSubsection
2020-09-20 23:08:17 +02:00
Timo Kreuzer
896d090ee6
[NTOS:MM] Call MiSessionAddProcess() from MmCreateProcess() like on x86
2020-09-20 23:08:17 +02:00
Timo Kreuzer
bebcda0b0b
[NTOS:MM] In the x64 version of MmCreateProcessAddressSpace() zero out all page table PFNs
2020-09-20 23:08:17 +02:00
Timo Kreuzer
04f0c7d0d7
[NTOS:KE] Zero out ExceptionFrame member in Syscall handler
2020-09-20 23:08:17 +02:00
Timo Kreuzer
366e8a840c
[NTOS:KE] Disable interrupts before lowering IRQL in KiDpcInterruptHandler to avoid stacking up DPC interrupts
2020-09-20 23:08:17 +02:00
Timo Kreuzer
3aaee35629
[NTOS:KE] Save and restore previous mode in KiZwSystemService and fix restoring the trap frame
2020-09-20 23:08:17 +02:00
Timo Kreuzer
b2a483b9ea
[NTOS:KE] Don't use FrLdrDbgPrint anymore. It served us well, but now it's time to go away.
2020-09-20 23:08:17 +02:00
Serge Gautherie
889b077b23
[REACTOS] *.spec: Fix some function/parameter types ( #3154 )
2020-09-20 19:21:11 +02:00
Michael Stamper
b43e4c981e
[KDBG] Fixed handle leak in KdbpSymLoadModuleSymbols() when RosSymCreateFromFile() fails ( #3184 )
2020-09-14 21:48:06 +02:00
Timo Kreuzer
2aca4b2795
[ASM] Fix boot with VS 16.7.3 / MSVC 19.27
...
See https://developercommunity.visualstudio.com/content/problem/1180800/ml-x86-assume-directive-causes-invalid-code-genera.html
2020-09-12 15:01:04 +02:00