Commit graph

120 commits

Author SHA1 Message Date
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
George Bișoc a330b56787
[NTOS:PS] Enable alignment probing for thread/process information classes
In addition to that, here are some stuff done in this commit whilst testing:

- ICIF_QUERY_SIZE_VARIABLE and friends were badly misused, they should be used only when an information class whose information length size is dyanmic and not fixed. By removing such flags from erroneous classes, this fixes the STATUS_INFO_LENGTH_MISMATCH testcases.

- Use CHAR instead of UCHAR for classes that do not need alignment probing, as every other class in the table do, for the sake of consistency.

- ProcessEnableAlignmentFaultFixup uses BOOLEAN as type size, not CHAR. This fixes a testcase failure on ROS.

- Check for information length size before proceeding further on querying the process' cookie information.

- ProcessHandleTracing wants an alignment of a ULONG, not CHAR.

- Move PROCESS_LDT_INFORMATION and PROCESS_LDT_SIZE outside of NTOS_MODE_USER macro case. This fixes a compilation issue when enabling the alignment probing. My mistake of having them inside NTOS_MODE_USER case, sorry.

- On functions like NtQueryInformationThread and the Process equivalent, complete probing is not done at the beginning of the function, complete probing including if the buffer is writable alongside with datatype misalignment check that is. Instead such check is done on each information class case basis. With that said, we have to explicitly tell DefaultQueryInfoBufferCheck if we want a complete probing or not initially.
2021-06-06 17:14:22 +02:00
Timo Kreuzer f1ed97d6cc [NTOS:KE/x64] Implement KiSetTrapContext
KiSetTrapContext is an asm wrapper around RtlSetUnwindContext, which first stores an exception frame to assure that all non-volatile registers were put on the stack, then calls RtlSetUnwindContext to update their first saving positions on the stack and finally restore the exception frame to potentially load any updated registers, that haven't been saved elsewhere on the stack.
2021-06-02 18:25:36 +02:00
Jérôme Gardou a3629ab08b [RTL] SAL-annotate RtlUnicodeStringToCountedOemString
Brought to you by Hermès
2021-05-19 22:50:29 +02:00
Jérôme Gardou 53a6c44f74 [NTDLL_APITEST] Add some tests for RtlUnicodeStringToCountedOemString
CORE-17571
2021-05-19 22:50:29 +02:00
Jérôme Gardou 3adf450867 [REACTOS] Addendum to 5c7ce4475e - Fix MSVC 2015 build
Put data into PAGEDATA or INITDATA sections
Keep section declaration for prototypes

CORE-17540
2021-05-12 11:04:29 +02:00
George Bișoc 0fe7fdbdea
[NDK][NTOS:SE] Fix the member offsets in TOKEN, again...
The member offsets in comments were wrong again, whoops....
2021-05-09 18:17:53 +02:00
George Bișoc f5dc1c77b5
[NDK][NTOS:SE] Add the missing "LogonSession" member to TOKEN structure
And also fix the wrong member offsets in comments. The said offset values are based upon the ones retrieved with WinDBG.
2021-05-09 17:34:02 +02:00
Jérôme Gardou f421bccbcc [NTOS:MM] First shot for Working Set list support
- Initialize
- Add private page (no shared page support yet)
- Remove pages
- Trim

Yes, this is C++ in the kernel.
2021-05-04 12:02:41 +02:00
Jérôme Gardou 5466fc13a3 [NDK] Make kefuncs.h C++ aware 2021-05-04 12:02:41 +02:00
George Bișoc 11a60cebea
[NTOS:PS] Add some data structures
These are needed for API tests. The following structures are taken from Process Hacker.
2021-05-02 21:03:09 +02:00
Jérôme Gardou 382426f02e [NDK] Add some missing defines for EFLAGS on amd64 2021-04-28 13:10:23 +02:00
George Bișoc 44fb528fcc
[NTOS:SE] Implement the NtImpersonateAnonymousToken system call
Implement SepImpersonateAnonymousToken private helpers, which is necessary for the complete implementation of NtImpersonateAnonymousToken function and thus finally we're able to impersonate the anonymous logon token.
2021-04-27 12:25:03 +02:00
Victor Perevertkin c7d1ff4a9d [SDK][NDK] Fix clang 12 compilation 2021-04-09 03:51:32 +03:00
Jérôme Gardou 6d957d6958 [NDK] Define NX bit in X86PAE PTE struct 2021-04-08 15:40:37 +02:00
Eric Kohl c449929fef [NTOS:EX] Use RtlCutoverTimeToSystemTime to determine the current time zone id
CORE-14658
2021-04-03 09:38:07 +02:00
Jérôme Gardou 525d19d469 [NDK][XDK] Use decimal literals for MINxxxx defines
Because myLongLong < MINLONG is supposed to behave like you'd expect
2021-03-19 11:04:19 +01:00
Victor Perevertkin 029accdcf7
[NDK] Change the data structure for PlugPlayControlResetDevice control class
PlugPlayControlResetDevice shares the input structure with several other
control classes.
Source: ProcessHacker sources e9c8121f41/ntpnpapi.h
2021-03-16 03:17:42 +03:00
George Bișoc 6170b574f0
[NTOS:PS] Implement PS_QUOTA_TYPE and let the quota code use it (#3389)
This will replace the PoolIndex variable and as such we'll only be using the PS_QUOTA_TYPE enumeration, as Windows does. Both QuotaEntry, QuotaUsage and QuotaPeak depend explicitly or implicitly on this enumeration. Further details about this enum can be found in the following articles.
https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ps/psquota/type.htm?tx=68,143
https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ps/psquota/block.htm?tx=68,142,143
https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/ps/eprocess/index.htm (see QuotaPeak and QuotaUsage)
2021-03-02 20:09:58 +01:00
George Bișoc dd4c113594
[NTOS:SE] Do not use a global lock for tokens (#3445)
In Windows Server 2003 the lock is initialised on a per-token basis, that is, the lock resource is created in SepDuplicateToken() and SepCreateToken() functions. This ensures that the lock initialisation is done locally for the specific token thus avoiding the need of a global lock.
2021-02-05 12:10:19 +03: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
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 6a4c6ea5d0 [RTL] Implement RtlTryAcquireSRWLockExclusive & RtlTryAcquireSRWLockShared 2021-01-29 18:42:54 +01: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
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
Hermès Bélusca-Maïto de16ef3da0
[NDK] Add missing nop NEC definitions if not X86 (for consistency with what's done in the kernel-mode headers). Addendum to 9feab8e9. 2020-11-26 02:05:59 +01:00
Hermès Bélusca-Maïto 9feab8e95a
[NDK][XDK] Add some missing macros for run-time checks of X86 system architecture (NEC support). 2020-11-26 00:29:34 +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 2a8c680dbe [NTOS:KE:X64][NTDLL:X64] Implement KiUserExceptionDispatcher and fix KiDispatchExceptionToUser 2020-10-31 14:23:16 +01:00
Timo Kreuzer 0e5a4d5afe [PSDK] Import some SAL headers from MS
Taken from https://github.com/microsoft/ChakraCore/tree/master/pal/inc/rt

* Move _Check_return_opt_ and _Check_return_wat_ to crtdefs.h
* Update sal.h from https://github.com/microsoft/ChakraCore/blob/master/pal/inc/rt/sal.h
* Import no_sal2.h from MS and remove the one in NDK
* Import specstrings.h from MS
* Import specstrings_strict.h from MS
* Add specstrings_undef.h (based on defines in specstrings_strict.h)
* Remove __REACTOS__ hacks from cdfs
2020-10-29 06:51:28 +01: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 5abc016401 [NTOS/MM] Initialize process Working set and start implementing adding entries to it 2020-10-20 15:20:59 +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
Joachim Henze abbe656407 [SDK][NDK][PSTYPES] Fix regressions CORE-17247 & CORE-17248
By reverting the guilty rev 0.4.14-dev-1239-g
7481bda679

and placing a C_ASSERT() to protect us from doing the
same fault again in the future. (proposed by Mark Jansen)

This will allow again to use kernel32.dll from 2k3sp2 to
reach desktop and it will allow Google Earth to run again.

Unfortunately it will break CORE-16757 again,
but we did not ship that improvement yet
and we believe that revert to be correct.

When approaching CORE-16757 later, make sure to double-check
also CORE-17247 & CORE-17248 with your fix.

We did excessive testing here, see
https://jira.reactos.org/browse/CORE-17247?focusedCommentId=125166&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-125166
2020-09-07 20:32:00 +02:00
George Bișoc f87fb4e3df
[NTOS:RTL] Implement the kernel-mode version of RtlGetNtProductType (#3029)
RtlGetNtProductType comes into two variants: one in user-mode that is exported for use from NTDLL layer and the kernel-mode that is used exclusively by the NT kernel. The kernel-mode variant of the function is not exported.
2020-08-26 17:40:45 +03:00
Thomas Faber 2c4a554d72
[NDK] Complete range list function & structure declarations. CORE-6372
* Add the remaining functions & annotate.
* Add the RTLP_RANGE_LIST_ENTRY structure, which is present in symbols

Note: range list declarations should really be !NTOS_MODE_USER, since ntdll
doesn't export these functions; however, our RTL itself is built with
NTOS_MODE_USER, so that's not an option at this point.
2020-08-15 21:31:29 +02:00
Thomas Faber db180c29c7
[NTOS:SE] Implement job case in PsImpersonateClient. CORE-8787 2020-05-17 16:05:00 +02:00
Serge Gautherie aa6e11b549
[NDK][XDK] Add 3 CM_RESOURCE_INTERRUPT_* defines (#2755) 2020-05-14 14:31:53 +02:00
Mark Jansen 362f4b5915
[NDK] Fix RTL_UNLOAD_EVENT_TRACE_NUMBER 2020-04-26 14:35:45 +02:00
Serge Gautherie f44cb6de96
[NDK][NTDLL] RtlGetNtProductType(): Update it with SAL2 annotations 2020-04-26 14:08:58 +02:00
Mark Jansen 234dfd4f2e
[NDK] Fix RTL_DEBUG_INFORMATION definition 2020-04-26 13:44:01 +02:00
Mark Jansen de6e160841
[NDK] Fix BackTrace size in RTL_PROCESS_BACKTRACE_INFORMATION 2020-04-26 13:44:01 +02:00
Mark Jansen 01dc54056f
[NDK] Add STACK_TRACE_DATABASE definition 2020-04-26 13:44:01 +02:00
Katayama Hirofumi MZ 774ef4e80e
[SDK][RTL][NTDLL_APITEST] Add RtlMultipleAllocateHeap and RtlMultipleFreeHeap (#2641)
- Add RtlMultipleAllocateHeap and RtlMultipleFreeHeap functions (2k3+).
- Add a testcase for two functions.
CORE-12026
2020-04-24 17:45:43 +09:00
Hermès Bélusca-Maïto 7e0927a39f
[FLTMGR][NDK] Fix typos. 2020-04-09 16:05:26 +02:00
Vadim Galyant 3c585d0e38
[NTOS:MM] Since the _MMPTE_SUBSECTION structure for x86 (without PAE) uses the SubsectionAddressLow truncated by the least significant three bits, the _CONTROL_AREA, _LARGE_CONTROL_AREA, _SUBSECTION, _MSUBSECTION structures must be 8-byte aligned.
Corresponding checks in MmArmInitSystem() have been removed.
2020-04-06 11:16:34 +02:00
Mark Jansen 4b2665046d
[NDK] Ensure RTL_IMAGE_NT_HEADER_EX_FLAG_NO_RANGE_CHECK is available regardless of NTOS_MODE_USER being defined.
CORE-14857
2020-03-29 21:27:38 +02:00
Andreas Maier 782ff23261
[MSV1_0] LsaApLogonUserEx2: use RtlRunDecodeUnicodeString to decode password 2020-03-28 23:27:34 +01:00
Bișoc George 7481bda679
[SDK][NDK][PSTYPES] Align the PROCESS_PRIORITY_CLASS structure during compile time (#2478)
CORE-16757

After doing investigations on the priority class structure alignment, it's been revealed that in Windows XP and Server 2003 this PROCESS_PRIORITY_CLASS structure is aligned as a 4-bytes of size hence NtQueryInformationProcess() probes the alignment of user mode arguments buffer output and buffer length with requirement of a ULONG.

As PROCESS_PRIORITY_CLASS was initially aligned as a 1-byte size because both BOOLEAN and UCHAR are just unsigned characters, the compiler may not align such structure and gracefully let the default alignment of such structure as is, 1-byte because an unsigned char has a size of 1 byte. Setting an align attribute to this structure fixes the problem of a potential datatype misalignment which caused GetPriorityClass() to not retrieve the process' priority class properly.
2020-03-28 19:17:10 +01:00