Commit graph

81937 commits

Author SHA1 Message Date
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
Serge Gautherie 4121b0e805 [MIDIMAP] MIDIMAP_modMessage(): Fix a MSVC amd64 C4133 warning
MSVC amd64
'...\dll\win32\winmm\midimap\midimap.c(474): warning C4133: 'function': incompatible types - from 'LPDWORD' to 'DWORD_PTR *''

Import missed parts of
29b00e1a8c

Addendum to b40e7f0 (r47900).
CORE-7538
2022-04-11 19:20:13 +03:00
Katayama Hirofumi MZ 05bbbd7d8b
[NTUSER] Dereference spDefaultImc at UserCreateInputContext (#4446)
Dereference pti->spDefaultImc by UserDereferenceObject if pti->spDefaultImc is NULL at UserCreateInputContext function. CORE-11700
2022-04-11 10:53:36 +09:00
Katayama Hirofumi MZ 88c1d8c737
[NTUSER] Set error on NtUserCreateInputContext (#4444)
Set the error code correctly on NtUserCreateInputContext.
CORE-11700
2022-04-10 19:26:19 +09:00
Katayama Hirofumi MZ 0f1e19a7b6
[NTUSER] Simplify IntDestroyInputContext (#4443)
CORE-11700
2022-04-10 17:20:21 +09:00
Katayama Hirofumi MZ eb902e5bee
[NTUSER] Improve NtUserDestroyInputContext etc. (#4442)
CORE-11700
2022-04-10 12:27:38 +09:00
Katayama Hirofumi MZ de38e3be61
[NTUSER][INCLUDE] Add IMC offset info (#4439)
Add C_ASSERT assertions on the offsets of the members of IMC structure. CORE-11700
2022-04-10 07:27:30 +09:00
Hermès Bélusca-Maïto 04eca8e2b2
[WIN32K] Remove incorrect packing specification around _TL, _WIN32THREAD and _THREADINFO structures.
CORE-18140

This was introduced historically in commit 583de66b3 (r7460) to
workaround some compiler problems (or replace already existing
GCC-specific __attribute__((packed)) annotations); however these
structures are in-memory-only, do not describe any on-disk data
format and don't describe hardware-specific data. So they should
have the "natural" alignment of the target platform.

They also have to match the documented layouts at:
https://reactos.org/wiki/Techwiki:Win32k/THREADINFO
https://www.geoffchappell.com/studies/windows/km/win32k/structs/threadinfo/index.htm
at least for the compatible parts that ReactOS shares.
2022-04-09 23:31:44 +02:00
Hermès Bélusca-Maïto e5d17a0219
[HALX86:ACPI] Use the correct PCH file for compilation.
This also removes the following warnings, that were present because,
as the ACPICA acpi.h header was used as PCH (instead of none, or the
hal's own main header), it was "included" before any other header
-- and in particular, before hal.h -- and as a result, colliding defines
were still defined even if the #undef tricks were used for them.

rosbuilds\sdk\include\reactos\mc\bugcodes.h(1417): warning C4005: 'ACPI_BIOS_ERROR': macro redefinition
reactos\drivers\bus\acpi\acpica\include\acoutput.h(243): note: see previous definition of 'ACPI_BIOS_ERROR'
reactos\hal\halx86\include\hal.h(41): warning C4109: unexpected identifier '_read'
reactos\hal\halx86\include\hal.h(42): warning C4109: unexpected identifier '_read'
2022-04-09 20:18:03 +02:00
Katayama Hirofumi MZ bc8a4ac37b
[IMM32] Many renamings and 'Win:' info (#4438)
- Add many Win: comments.
- s/Imm32UnloadIME/Imm32FreeIME/
- s/Imm32LoadImeInfo/Imm32LoadIME/
- s/g_hImm32Inst/ghImm32Inst/
- s/Imm32AllocAndBuildHimcList/Imm32BuildHimcList/
- s/Imm32SelectLayout/Imm32SelectInputContext/
CORE-11700
2022-04-09 10:41:39 +09:00