Commit graph

81796 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
2c032f3fc9
[BOOTDATA][FS] Small adjustments of filesystem drivers registry parameters.
- Fix the ErrorControl values to 1 (SERVICE_ERROR_NORMAL).
- Fix RamDisk driver type (it's SERVICE_KERNEL_DRIVER, not FS).
- btrfs.inf : This is a filesystem driver, so fix its ServiceType.

- Move 3rd-party FS data (btrfs, ext2, nfs(d)) from the system
  hivesys.inf and into their dedicated **.reg.inf files.
2022-04-18 02:40:33 +02:00
Hermès Bélusca-Maïto
75e2fb4566
[KERNEL32] Improve annotation of BaseProcess/ThreadStartup(); remove useless cast; fix PPROCESS_START_ROUTINE return type. 2022-04-18 02:40:32 +02:00
Katayama Hirofumi MZ
7e13883723
[NTUSER] Do assignment lock pti->spDefaultImc (#4456)
According to JIRA user simonelombardo, there was crash in exiting a thread.
- Add UserAssignmentLock, and UserAssignmentUnlock helper functions.
- Lock and unlock pti->spDefaultImc by using those helper functions.
CORE-18044
2022-04-18 08:23:18 +09:00
Eric Kohl
851c5e0c3a [SETUPAPI] SetupDiCreateDeviceInfoW: Fix flags conversion for CM_Create_DevInst_ExW 2022-04-17 23:32:01 +02:00
Eric Kohl
dde7e6e254 [SETUPAPI] CM_Locate_DevNode_ExW: The root device does not need to be validated 2022-04-17 22:50:26 +02:00
Hermès Bélusca-Maïto
ea3e4bb4cb
[CMAKE:MSVC] Refine ASM16 ml.exe path selection. Addendum to commit 60733590. 2022-04-17 19:31:48 +02:00
Hermès Bélusca-Maïto
8ed7d4b341
[SDK:CMLIB][FREELDR:NTLDR] Revert commit 168fea0ee and provide a better fix. Addendum to 93d8a1b7b.
Correct fix was to fix the HCELL_INDEX <-> HKEY conversions, much like
is being done with UlongToHandle / HandleToUlong.

The on-disk/in-memory hive file structures are platform-independent:
their layout must not depend on whether code is compiled in 32 or 64
bits.
2022-04-17 16:46:47 +02:00
Hervé Poussineau
0ce5985109 [WIN32SS] Do not call DrvEnableDriver/DrvDisableDriver for LDEV_IMAGE types 2022-04-17 16:20:04 +02:00
Stanislav Motylkov
168fea0eee
[CMLIB] Fix 64-bit build. Addendum to 93d8a1b7b.
Thanks to Hervé Poussineau for help.
2022-04-17 16:16:41 +03:00
Eric Kohl
a355e8ad27 [SETUPAPI] SetupDiCreateDeviceInfoW creates phantom devices 2022-04-17 14:29:14 +02:00
Eric Kohl
7cc5163bfa [UMPNPMGR] Add checks to PNP_GetRelatedDeviceInstance
PNP_GetRelatedDeviceInstance must fail if we try to retrieve the parent or a sibling of the root device.
2022-04-17 13:52:59 +02:00
Hervé Poussineau
1744b01ad9 [WIN32SS] Rewrite LDEVOBJ reference counting
- introduce LDEVOBJ_vDisableDriver (reversal of LDEVOBJ_bEnableDriver)
- introduce LDEVOBJ_bUnloadImage (reversal of LDEVOBJ_pLoadDriver)
- introduce LDEVOBJ_vDereference, to remove a reference to a LDEVOBJ

Also:
- correctly handle success to unload the image, by removing it from pldev list
- correctly handle failure to unload the image, by re-enabling the driver
- simplify EngUnloadImage, as a wrapper around LDEVOBJ_vDereference
- move LDEVOBJ_ulGetDriverModes lower to prevent forward declaration of
  LDEVOBJ_vDereference

Unfortunately, disable driver unloading as long as ntoskrnl can't reload
a driver it just unloaded...
2022-04-17 08:48:33 +02:00
Hervé Poussineau
3a1a2aa16f [WIN32SS] Fix use of unitialized variable 2022-04-17 08:46:09 +02:00
Hermès Bélusca-Maïto
736331973e
[FREELDR:NTLDR] Rewrite RegInitCurrentControlSet() using CmpFindControlSet().
Also remove useless "success" traces at the end of some registry functions.
(Only show when they enter and when they fail.)
2022-04-17 04:57:43 +02:00
Hermès Bélusca-Maïto
94874baf19
[FREELDR:NTLDR] Use NTOS kernel's CMBOOT functions to enumerate and build the boot-time driver list.
They are correct and are more performant.

- Rewrite WinLdrAddDriverToList() on the model of CmpAddDriverToList()
  with support for CmpIsDriverInList().

- Disable RegEnumKey() as it is now unused.
2022-04-17 04:57:42 +02:00
Hermès Bélusca-Maïto
02e659d248
[BOOTDATA] Remove hackish entries that really caused the CDFS to be loaded twice in the LiveCD.
They date back from commit a880f2ee (r9611), and were the root cause for
the bug that was tentatively fixed by commit 81a9ce44e (PR #755).

On Windows, boot file system drivers have either the SERVICE_DEMAND_START
or the SERVICE_DISABLED start type, and only the filesystem to access the
boot media is manually loaded by the OS loader (other FSes that are needed
later are loaded by the FSRecognizer).

Also there is no need to disable NTFS anymore.
2022-04-17 04:57:41 +02:00
Hermès Bélusca-Maïto
93d8a1b7b1
[FREELDR:NTLDR] Adapt the registry code to access from outside the underlying HHIVE and HCELL_INDEX (needed for cmboot). 2022-04-17 04:57:40 +02:00
Katayama Hirofumi MZ
567b0700fe
[NTUSER] Add 'Win:' comments to some functions (#4453) 2022-04-17 06:53:37 +09:00
Hermès Bélusca-Maïto
6ff0232368
[NTOS:CM] Adapt cmboot.c for usage in NT/ReactOS bootloader.
- Add a new cmboot.h header to isolate the boot-support definitions
  shared with the NT/ReactOS bootloader.

- Move CmpFreeDriverList() to cmboot.c so that we can use it for
  cleanup paths in the NT/ReactOS bootloader.

- CmpFindControlSet(): Directly build the control set name in UNICODE,
  instead of doing an ANSI->UNICODE conversion.

- Directly assign the CurrentControlSet\Services constant string,
  instead of going the route of init-empty-string + append-string.
  This is possible since that string is not modified later.

- Remove ASSERT(FALSE), replacing them with correct failure handling.

- Add cleanup paths in CmpAddDriverToList().

- Simplify and fix CmpFreeDriverList(): it's the full DriverNode
  that needs to be freed; not the LIST_ENTRY pointer.

- Add other validity checks:
  * Registry value types and data sizes;
  * For multi-strings, verify that they are NULL-terminated.
  * For (multi-)strings, check whether they are NULL-terminated before
    optionally removing their trailing NULL character from the count.
    Check also whether they are of zero-length and take appropriate
    action where necessary.

- Add CmpIsDriverInList() for future usage in CMBOOT compiled in
  bootloader mode.

- Add SAL annotations and Doxygen documentation.

- Add debug traces.

- Formatting / code style fixes.

** TODO: Fix SafeBoot support **
2022-04-16 18:37:45 +02:00
Hermès Bélusca-Maïto
6a03fb7099
[SDK:CMLIB] Use Hive->Allocate / Hive->Free where possible. 2022-04-16 18:33:24 +02:00
Dmitry Borisov
b79fbe2333 [NVNET] Add driver for nForce-based NICs
The driver supports all nVidia chipset models from 2001 until 2010, starting from nForce.
All NICs are compatible with x86 and amd64 devices only.

Tested by Daniel Reimer on OG Xbox and by me on MCP board.

CORE-15872 CORE-16216
2022-04-16 11:54:24 +03:00
Dmitry Borisov
269f3a2b24 [HALXBOX] Do not claim interrupt resources for the KD COM port
The actual COM port lacks SERIRQ, IRQ 4 is hardwired to the NIC

CORE-15872 CORE-16216
2022-04-16 11:54:24 +03:00
Dmitry Borisov
96b40c9566 [DDK][PSDK] Add missing NDIS definitions for wake-up support
CORE-15872
2022-04-16 11:54:24 +03:00
Katayama Hirofumi MZ
34600f3ddf
[USER32] Add 'Win:' info to misc/imm.c (#4452)
- Add many Win: comments to misc/imm.c.
- Rename GetImmFileName as User32GetImmFileName.
- Rename bImmInitializing as gbImmInitializing.
- Rename gnImmUnknownFlag1 as gfConIme.
- Formating UpdatePerUserImmEnabling code.
CORE-11700
2022-04-16 14:34:06 +09:00
James Tabor
001e300d92 [Win32SS] Fix Build 2
Fix Build 2
2022-04-15 19:30:59 -05:00
James Tabor
b1d27cd0fb [Win32SS] Fix Build
Fix Build
2022-04-15 19:27:50 -05:00
James Tabor
250e5ef38f [ENG] Update Structure
Update GRAPHICS_DEVICE monitor count and video monitor device pointer.
Update dwAccelerationLeve comments.
Updated for printer support.
2022-04-15 19:19:54 -05:00
Hervé Poussineau
9400063aae [WIN32SS] Enable multidisplay driver when required
For now, it is only a stub which returns an error.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
f3f4cc0f25 [WIN32SS] Implement EngQueryDeviceAttribute 2022-04-15 23:09:16 +02:00
Hervé Poussineau
c89ac107ce [WIN32SS] Handle Graphics acceleration level (registry key Acceleration.Level)
- store the acceleration level in PDEVOBJ
- when searching a pdev, search a pdev with required acceleration level
- disable some functions when not at full acceleration level
  (levels 3 and 5 are not implemented)
2022-04-15 23:09:16 +02:00
Hervé Poussineau
494de7c2df [WIN32SS] Remove now unused code
Initialization of device mode list will be done later, just before switching to graphics mode.

If no graphic display is available, we will now fail when starting first GUI application in
co_IntGraphicsCheck(). Add a bugcheck here to prevent frozen screen.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
2d2824f1b9 [WIN32SS] Implement PDEVOBJ_lChangeDisplaySettings to create initial MDEV
This function can create a MDEV for the whole display (maybe containing multiple
PDEVs), or update settings of a specific PDEV.

- call PDEVOBJ_lChangeDisplaySettings when switching to graphics mode.
- modify EngpGetPDEV to search requested PDEV only in current MDEV
2022-04-15 23:09:16 +02:00
Hervé Poussineau
9db63ad595 [WIN32SS] Add functions related to MDEV (creation, destruction...) 2022-04-15 23:09:16 +02:00
Hervé Poussineau
a0cfdcd409 [WIN32SS] Introduce the MDEVOBJ structure
This will be used (later) to store the list of all enabled display devices.

Add a global variable gpmdev (should really be stored in DISPLAYINFO structure)
Replace global variable gppdevPrimary by pmdev->ppdevGlobal.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
0f617ddfbb [WIN32SS] Rewrite EngpCreatePDEV as PDEVOBJ_Create
- change first argument to be a PGRAPHICS_DEVICE instead of a device name
- add ldevtype (for now, only LDEV_DEVICE_DISPLAY is allowed)
- always pass a devmode if ldevtype is LDEV_DEVICE_DISPLAY
- insert the ppdev into gppdevList on success
- change callers to adapt them to new rules
2022-04-15 23:09:16 +02:00
Hervé Poussineau
c5fb89dced [WIN32SS] Add PDEVOBJ_vEnableDisplay and PDEVOBJ_bDisplayDisplay
Use them where appropriate.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
34085be22d [WIN32SS] Rename PDEVOBJ_vSwitchPdev to PDEVOBJ_bDynamicModeChange
Even if it currently always succeeds, let it return a boolean for later.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
241e579dfa [WIN32SS] Improve PDEVOBJ_bEnablePDEV/PDEVOBJ_vRelease/PDEVOBJ_pSurface
- use debug channels
- handle a NULL ppdev->pGraphicsDevice
- unreference graphic driver when needed
2022-04-15 23:09:16 +02:00
Hervé Poussineau
ded971c425 [WIN32SS] Remove useless parameter dwFlags in EngpFindGraphicsDevice() 2022-04-15 23:09:16 +02:00
Hervé Poussineau
75f4be53df [WIN32SS] Preparation to load internal drivers (ie entry point in win32k)
- Change LDEVOBJ_bEnableDriver to directly take the entry point
  (pGdiDriverInfo not required anymore)
- Add LDEVOBJ_pLoadInternal to load and start an internal driver
2022-04-15 23:09:16 +02:00
Hervé Poussineau
333f3382f6 [WIN32SS] Remove useless prototype (function never existed) 2022-04-15 23:09:16 +02:00
Hervé Poussineau
3cb1dd8ab2 [WIN32SS] Rewrite PDEVOBJ_pdmMatchDevMode to LDEVOBJ_bProbeAndCaptureDevmode
- make it return a new allocated PDEVMODEW instead of a pointer into
  existing PGRAPHICS_DEVICE (usefull when available display modes can
  dynamically change: VirtualBox, RDP, ...)
- update all callers
2022-04-15 23:09:16 +02:00
Hervé Poussineau
21ddeb76d9 [WIN32SS] Extract devmode list query to new function LDEVOBJ_bBuildDevmodeList
LDEVOBJ_bBuildDevmodeList() only queries the available display modes, without
choosing the one to use on the graphic device, and without immediately
creating a PDEV.

Replace first part of EngpPopulateDeviceModeList() function by a call
to this new function LDEVOBJ_bBuildDevmodeList().
Keep second part of EngpPopulateDeviceModeList() function, which
chooses the default display mode.
2022-04-15 23:09:16 +02:00
Hervé Poussineau
7d93362f5a [WIN32SS] Implement LDEVOBJ_ulGetDriverModes
- implement LDEVOBJ_ulGetDriverModes (which get modes from a not yet loaded driver),
  and use it in EngpPopulateDeviceModeList
- remove now useless LDEVOBJ_pdmiGetModes (replaced by LDEVOBJ_ulGetDriverModes)
2022-04-15 23:09:16 +02:00
Hervé Poussineau
3b234cce25 [WIN32SS] Rename EngLoadDriverEx to LDEVOBJ_pLoadDriver 2022-04-15 23:09:16 +02:00
Katayama Hirofumi MZ
3820744a18
[NTUSER][IMM32_APITEST] Associate HIMC to WND (#4451)
- Set the default input context to WND at IntCreateWindow function.
- Add more tests to the himc testcase of imm32_apitest.
CORE-11700
2022-04-15 13:16:50 +09:00
Katayama Hirofumi MZ
f848343bff
[IMM32] Improve ImmLockClientImc (#4450)
CORE-11700
2022-04-14 14:10:19 +09:00
Katayama Hirofumi MZ
e5f637f93f
[IMM32] Add Win: comments more (#4449)
CORE-11700
2022-04-14 11:23:16 +09:00
Serge Gautherie
0c5fc49f82 [CMAKE] msvc.cmake: Enable C4090 warning as error
C4090: different 'modifier' qualifiers

Follow-up to 42d2d5e (0.4.14-dev-847) and 41bc57d (0.4.15-dev-2952),
which silenced affected modules.
CORE-7538
2022-04-12 02:08:45 +03:00
Thamatip Chitpong
59dcec1faf
[TASKMGR] Processes page: Add "Properties" and "Open File Location" context menu items (#4323)
Signed-off-by: Thamatip Chitpong <tangaming123456@outlook.com>
Reviewed-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Joachim Henze <joachim.henze@reactos.org>
Reviewed-by: Mark Jansen <mark.jansen@reactos.org>
2022-04-11 19:28:28 +03:00