[WINESYNC] setupapi: Use NtDeleteKey instead of an invalid RegDeleteKeyW.
wine commit id 28025d64ef4e2b367f4e7417d6bed93c5f425892 by Damjan Jovanovic <damjan.jov@gmail.com>
[WINESYNC] Assorted non-ANSI function declaration fixes (missing void).
wine commit id 2993785f3aa6f1b9f5ccc4a2ace21399d2ba42f1 by Francois Gouget <fgouget@free.fr>
[WINESYNC] setupapi: Add prototypes for the Setup*Log*() functions. Better stick to the PSDK types.
wine commit id c2d47ced74ef785c774835597325b4beacada1da by Francois Gouget <fgouget@free.fr>
[WINESYNC] setupapi: Fix return type.
wine commit id 2e2fe9b9f786479e5285504b6a98d6cdf96c00ed by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Fix typo.
wine commit id d62285d006389c2a17e1d1b33f2ffcb6bd0f3ba0 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Add missing prototypes and definitions, and change function prototypes to match.
wine commit id 9fc7973727e9140f92188d5624e8e44600cb9065 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Add stubs for SetupDiGetDeviceInstanceIdA/W.
wine commit id 7c0a3117535d1a4b9a724ab2494c3de434fea248 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Add a placeholder for devices.
wine commit id a7ad54ef9243a618a55dbaf8815363aa62da3e6c by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiEnumDeviceInfo.
wine commit id 634cba84d2fc548594276a26d672e4117a527956 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiGetDeviceInstanceIdA on top of SetupDiGetDeviceInstanceIdW.
wine commit id c1ccd65792cc003bcac08d5ceeaac17b80447919 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Add error checking to SetupDiCreateDeviceInfoW stub.
wine commit id 1bbfd72afbda1e1b953ac6fef7a396ba5b518209 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiCreateDeviceInfoW.
wine commit id 83f05e79bb77785a101c458100dc227738abda6e by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiGetDeviceInstanceIdW.
wine commit id f94f6367f2f4ada5bfb1fe973c6836b2b2e71dbc by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiGetDeviceRegistryPropertyA/W.
wine commit id bc924f5b3a02316f71b70653da4c953ba00f557e by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiSetDeviceRegistryPropertyA/W.
wine commit id 60fefd72e8330e2942235309e3cd3ea2604c7a4c by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Make a helper to convert a GUID to a string.
wine commit id e1449796973d67a204e72f6b43124c9f5f2609f5 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Save device description to registry when creating a device.
wine commit id 8985a62a340a7f1fdd44c91c878d0c94a0af5474 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Save class GUID to registry when creating a device.
wine commit id 00ef2e3269a51e5817121ee47b3e18d9e58e77d5 by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Devices created by SetupDiCreateDeviceInfo are "phantoms", and are deleted from the registry when the set that contains them is closed.
wine commit id 80be1fe74007ff207480036ee8596809eb3dae5d by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiGetClassDescriptionExA.
wine commit id 6b50538f123d0b62e773f749dd32a18bd8e3157f by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Add stub for SetupDiRegisterDeviceInfo.
wine commit id 3a2a99474e23c40a0fb302382cec744ecaef7ccc by Juan Lang <juan.lang@gmail.com>
[WINESYNC] setupapi: Implement SetupDiRegisterDeviceInfo.
wine commit id f4b9bc2454b6c996ea601a2ae3d3ce80b8225273 by Juan Lang <juan.lang@gmail.com>
In ROS commit f9df7af28a
SetupDiBuildClassInfoListExW has been reimplemented with CM_* functions.
SetupDiClassGuidsFromNameExW needs the same treatment as well (but this
hasn't been done in that commit...)
[WINESYNC] setupapi: Do not use wide character constants.
wine commit id 67ed76e685ec89b243af11fdb892e38929de0110 by Michael Stefaniuc <mstefani@redhat.de>
wine commit id 34556854eda0de9d098968e8d948090d44030d25 by Rob Shearman <rob@codeweavers.com>
SYNC NOTE: Adapted for ReactOS code.
Co-authored-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
So pass the correct inf handle to SetupQueueDefaultCopyW and SetupQueueCopySectionW.
wine commit id 66d5cb2967b89fe98076948917070a0d3f4b925d by Rob Shearman <rob@codeweavers.com>
If the file already exists, then it should use a name with the form oem%u.inf instead.
wine commit id b1030f59e69e89091bf997e52e831362f9077e69 by Rob Shearman <rob@codeweavers.com>
[WINESYNC] include: Move cfgmgr32.h to include/ to match the SDK.
wine commit id 3b6017ae1894648f478ab242207e1153c20c8b57 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Fix a typo.
wine commit id ab83183c03e0eccda67176f393ea0525b4d1ecf9 by Dmitry Timoshkov <dmitry@codeweavers.com>
[WINESYNC] setupapi: The inf section suffix that corresponds to __x86_64 is .ntamd64.
wine commit id 709735e294412a0cab15696faa9fcf6833e552bc by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Implement SetupGetSourceInfo{A,W}.
wine commit id ae64a62241ce8868c5cd0420792217549e2f2145 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Added AssertFail stub.
wine commit id 3d11b8650c4392043b0d84850011b1c19b75d589 by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Add a stub implementation for SetupPromptReboot.
wine commit id 7f31cc47561a9e903cdccd9b7de3a3faf645e154 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Fix handling of 'CopyFiles=@file'.
wine commit id 8cfd0251646862dd1415c9ac028958c044b38eb1 by Francois Gouget <fgouget@codeweavers.com>
[WINESYNC] setupapi: Add stub implementations for SetupDiGetINFClass and SetupSetSourceList.
wine commit id 275dbeb74e525c52ee0ae384d8e11068b6c949f7 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Implement SetupCopyOEMInf{A,W}.
wine commit id 939e8e4ce279a24b2bc2f716b5fcb66748677434 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Always return an empty list from SetupDiGetClassDevs.
wine commit id 7a039ebbf14b91c4db2b1868b4df6c5a873d4722 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Add a stub implementation for InstallCatalog.
wine commit id a9e4ced18b237f97d2be7473afca9076ff1ea9c4 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Add several tests for SetupCopyOEMInf, with fixes so the tests don't crash.
wine commit id 9eaea34e041671fa63095a825c32978d1a9780d5 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Fix InstallCatalog()'s calling convention.
wine commit id 61db3be294dd65341dfdfcdc6ab21dce4402aebd by Francois Gouget <fgouget@free.fr>
[WINESYNC] setupapi: Handle the SP_COPY_NOOVERWRITE flag.
wine commit id 3e5f62b2d8d7353f890ca6e4fb27809c9f7dae8f by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Don't allow relative paths in SetupCopyOEMInf.
wine commit id efa6591fff772c7fc88f3dd26500610f55d6b551 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: The Inf file should be copied regardless of the destination buffer, with tests.
wine commit id ff326fd0ffd4ad017634d6d068781d8a0736d4a2 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Correct the Inf output position.
wine commit id 672952d2b6abf525d3ccd73b68ee418f51f8eae2 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: SetLastError to ERROR_SUCCESS on success.
wine commit id 405b96e979dcb751988e061cd1f78319232d3d84 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Implement SetupGetFileCompressionInfoEx{A, W}.
wine commit id 8ccc19c74c43d81965ecffdaf9bce9d965a25f1b by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] setupapi: Implement SetupDecompressOrCopyFile{A, W}.
wine commit id c1950e2dccb0d16398997a228c3716a332d827d2 by Hans Leidekker <hans@it.vu.nl>
[WINESYNC] Remove more redundant NULL checks before HeapFree (found by Smatch).
wine commit id 56026299d0ce1bbc3b389cddcda08a1b9d9704c0 by Michael Stefaniuc <mstefani@redhat.de>
[WINESYNC] setupapi: Documentation update.
wine commit id f14f04dc8a895304ac90406a0d2c297a5e54f7d4 by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Implement SetupDiCreateDeviceInfoListExW.
wine commit id 8f5d90b44d8ca5b7e730a142952f45ac29b7ded5 by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Remove unneeded NULL checks before MyFree().
wine commit id bb80e2282e88c65a14cc0a1e82f4852baabcbcb0 by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Add stub for SetupDiCreateDeviceInfoW.
wine commit id 41aefd8c62bf4798fec567cb00afd0d98328e23a by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Implemented SetupDiCreateDeviceInfoA.
wine commit id 51cd07c37e56da960ab2c51b0391befeea0b6688 by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Move SetupDiGetClassDevsExW into devinst.c.
wine commit id c514700be28e33f5d237d5718a427fa07bc4e95d by Christian Gmeiner <christian.gmeiner@students.fhv.at>
[WINESYNC] setupapi: Add a stub implementation of SetupGetSourceInfo.
wine commit id b74f4d92d74953eabb594a17c91fb6a6aff60ee7 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Create an empty list when getting device interface classes.
wine commit id 93f5e0a7fd9c9f741de4a1faaa8a90ed88a36d60 by Kevin Koltzau <kevin@plop.org>
[WINESYNC] janitorial: Removed the rest of the redundant NULL checks before HeapFree.
wine commit id 757ee19ca119b3434a6249a00b1c39c0d36fb449 by Michael Stefaniuc <mstefani@redhat.de>
[WINESYNC] setupapi: Fix handling of inf paths that are quoted (due to spaces, typically).
wine commit id 3b7fb551ce211210abd5877b41207f6194fb3700 by Francois Gouget <fgouget@codeweavers.com>
[WINESYNC] setupapi: Fixed returns values and added a test for SetupDiOpenClassRegKeyExW.
wine commit id 9bbcb857f9aea3832e2def74fa4f517996061780 by Damjan Jovanovic <dj015@yahoo.com>
[WINESYNC] setupapi: Add stubs for SetupOpenLog, SetupCloseLog, and SetupLogError.
wine commit id 15b46847b0bc4d9bcc2b03d9377ce7342f4da536 by James Hawkins <truiken@gmail.com>
[WINESYNC] setupapi: Fixed wrong check (Coverity).
wine commit id 270dbc9d0733481dd8db34c93b215739a3e9fb30 by Paul Vriens <Paul.Vriens@xs4all.nl>
[WINESYNC] setupapi: Brace the guid in SetupDiOpenClassRegKeyExW.
wine commit id e6e96d3ea114790aabcdcbdcfa104fa393d07760 by Damjan Jovanovic <damjan.jov@gmail.com>
[WINESYNC] Add missing '\n's to Wine traces.
wine commit id 82babbee0bd375248bc68342e23e8d50548cfa1b by Francois Gouget <fgouget@free.fr>
Supporting the Language bar...
JIRA issue: CORE-19363
- Delete TFInitLib and TFUninitLib
calls from ctfmon.exe.
- Delete TFUninitLib from Cicero
library.
- Implement InitDisplayAttrbuteLib
in msctfime.ime.
- Improve CIC_LIBTHREAD structure.
Refactoring and reduce binary size.
JIRA issue: CORE-19268
- Add cicero static library in sdk/lib/cicero folder.
- Delete sdk/include/reactos/cicero folder.
- Adapt the dependencies to these changes.
- Make ctfmon, msutb, and msctf modules UNICODE.
Improve header compatibility and
code quality.
JIRA issue: CORE-19268
- Improve <imm.h> and <immdev.h>
compatibility by correctly choosing
the items.
- Use <immdev.h> instead of
<ddk/immdev.h>.
- Move INPUTCONTEXTDX, IMEINFOEX,
IMEDPI, and CLIENTIMC into
<imm32_undoc.h>.
- Adapt to these changes.
Use the MS PSDK-compatible name _INC_MALLOC, instead of the MinGW one
_MALLOC_H_, so that code that may depend on this to determine whether
malloc.h functions are defined, can compile without problems.
Supporting Language Bar...
JIRA issue: CORE-19363
- Add many global variables
to add UTB settings.
- Add IsSkipRedrawHKL, IsBiDiLocalizedSystem,
InitSkipRedrawHKLArray helper functions.
- Add InitFromReg helper function to
load the settings from registry.
- Add CicRegKey::EnumValue method.
+ Improve related comments.
Registry hives are opened in shared read access when NT is loaded in PE
mode (MININT) or from network (the hives residing on a network share).
This is true in particular for the main system hives (SYSTEM, SOFTWARE,
DEFAULT, ...).
However, in PE mode, we can allow other hives, e.g. those loaded by the
user (with NtLoadKey) to be loaded with full read/write access, since we
boot from a local computer.
In particular remove some extra-parentheses around single code tokens,
and replace few "DPRINT1 + while (TRUE);" by UNIMPLEMENTED_DBGBREAK.
+ Improve some comments.
Add a basic IOpenControlPanel implementation that supports Vista canonical registry names.
Implements `control.exe /name company.name [/page id]` and `IOpenControlPanel`
handling of Vista-style canonical registry names.
The documented `Microsoft.*` names don't work because they are simply not
in our registry but "[Executable Control Panel Items](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-an-executable-control-panel-item-registration-)" registered by 3rd-party ISVs
will function correctly in control.exe and the COM API.
Notes:
- `IOpenControlPanel` is implemented in CControlPanelFolder.cpp because
it is supposed to have tighter integration with that shell folder than
it does in this PR.
- `IOpenControlPanel` is also supposed to handle .cpl files with canonical
names registered under [`Extended Properties`](https://learn.microsoft.com/en-us/windows/win32/shell/how-to-register-dll-control-panel-item-registration-#step-3) but the control panel folder
does not implement `IShellFolder2::GetDetailsEx` yet, so it will have to wait.
- These "Executable Control Panel Items" are also supposed to be displayed
in the control panel itself but this PR does not address that. The
`ITEMIDLIST` format for those needs investigation...
- The Wow64 handling is perhaps not correct but it does not matter,
`ShellExecuteEx` gets to deal with whatever is in the `...\shell\open\command` key.
`CControlPanelFolder` would have to take more care when it starts
reading those keys so it knows when to append "(32-bit)" to the display name.
- `%s%s` because .cpl canonical names don't have the `::` prefix according
to Geoff Chappell.
- Always returns `CPVIEW_CLASSIC` because our `CControlPanelFolder` does
not support the category view.
GCC 8.4 and Clang 13.0.1:
`cc1: note: unrecognized command-line option ‘-Wno-deprecated-non-prototype’ may have been intended to silence earlier diagnostics`
Addendum to commit 4e3bf252d
* [SDK][VIRTIO][NETKVM] Make VirtIO a separate library
This is to avoid code duplication when more VirtIO drivers are brought in. This will also be used on development of a VirtIO XDDM GPU Driver.
* [VIRTIO] Sync with upstream
This is needed, because Wine code expects RtlUnwind to restore the non-volatile registers, before returning, but ours / the native one doesn't do that.
Should fix CORE-19392 and CORE-19397
Supporting TIPs...
JIRA issue: CORE-19360
- Fix some mistakes of
CUIFButton::OnMouseIn and
CUIFButton::OnMouseOut.
- Fix some mistakes of CUIFObject
and CUIFWindow.
Improve readability and reduce code.
JIRA issue: CORE-19268
- Delete cicSetLayout function and
use gdi32!SetLayout function directly.
- Don't use ::SetRect and ::SetRectEmpty.
- s/CUIFButton::m_dwUnknown10/CUIFButton::m_bPressed/.
- Reduce lines.
Supporting TIPs...
JIRA issue: CORE-19360
- Implement cicInitUIFLib and cicDoneUIFLib functions.
- Use them in msctfime and msutb.
- Add CUIFSystemInfo class in <cicero/cicuif.h>.
Supporting TIPs... UIComposition class requires a caret class.
JIRA issue: CORE-19360
- Add <cicero/ciccaret.h> header.
- Add CicCaret class for displaying a caret.
Use new(cicNoThrow) instead of plain operator new.
JIRA issue: CORE-19360
- Define CicNoThrow structure and
cicNoThrow macro in <cicero/cicbase.h>.
- Use new(cicNoThrow) instead of
plain operator new.
This is actually a Vista+ function, but we need it enable umpnpmgr.dll to notify services of device events. Up until WinXP it was possible to make direct calls to the service manager by umpnpmgr.dll because umpnpmgr.dll was loaded into the service manager process. From Vista onwards umpnpmgr.dll is run as a separate service host process. And since ReactOS always ran umpnpmgr.dll as a separate process, we have to use the Vista RPC functions to notify services.
They are renamed to 'msi_custom' and 'msi_selfreg', respectively.
This is to avoid any future build target name collisions with other
tests that would also use similarly-named targets. (For example, a
future setupapi wine-synced commit.)
Supporting TIPs and Language Bar...
JIRA issue: CORE-19361
- Implement InitLangChangeHotKey function.
- Add some global variables about hot-keys.
- Fix CicRegKey in <cicero/cicreg.h>.
Cicero interface is not Unicode (W)
but ANSI (A).
- ctfmon.exe is ANSI, not Unicode.
- msutb.dll is ANSI, not Unicode.
- Apply generic text mapping to the
cicero headers.
- Include <tchar.h> to use generic
text mapping.
CORE-19361, CORE-19362, CORE-19363
msutb.dll is the GUI back-end
of Language Bar (Tipbar).
- Add msutb.dll module at
dll/win32/msutb/.
- The implementation of
msutb.dll is currently stub.
- Modify msctf.spec and msctf.idl.
- Add <cicero/cicutb.h>.
- Adapt ctfmon.exe to these changes.
CORE-19362, CORE-19363
Make LdrUnlockLoaderLock Cookie type consistent with LdrLockLoaderLock
and LdrpMakeCookie functions.
In addition:
* Adjustment of the formatting string for ULONG_PTR;
* ntdll.spec: specify ptr for 2nd parameter of LdrUnlockLoaderLock:
This is a parameter whose length is pointer-like, platform-dependent.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
- Rename _IMCCLock as IMCCLOCK.
- Rename InternalIMCCLock as IMCCLock.
- Rename _IMCLock as IMCLOCK.
- Add get() pointer accessor of IMCCLock and IMCLOCK.
- Protect the pointer of IMCCLOCK and IMCLOCK.
CORE-19360
- Add CTFIMECONTEXT structure.
- Add CicInputContext class.
- Rename INPUTCONTEXTDX.dwUnknown5 as
hCtfImeContext and retype it as HIMCC.
- Implement CtfImeGetGuidAtom by using them.
CORE-19360
- Add link to imm32.dll.
- Add <cicero/imclock.h>.
- Add INIT_GUIDMAP constant to <immdev.h>.
- Implement CtfImeIsGuidMapEnable by using them.
CORE-19360
- Simplify patch directory usage;
- Fix the path shown in the warning message.
The staging patch path in the warning message didn't show the correct
sub-directory where the patch resides.
This fixes in particular problems when reverting created new files (i.e.
they are deleted). I suspect this is due to an endline-format "expectation"
from the git apply command.
This now correctly sets the commit author as 'winesync' (before it was
the committer's developer name) for the following types of commits:
`[WINESYNC]: revert wine-staging patchset for <MODULE_NAME>`
and
`[WINESYNC]: <MODULE_NAME> is now in sync with wine-staging <WINE_TAG>`
Expand on Timo's commit 4b5a55516.
We may encounter cases where either the 'directories' or 'files' lists
in the .cfg YAML files are empty, and we don't want the script to throw
an exception in that case.
Furthermore, explicitly check for such empty lists when calling PyGit2
index.add_all(...) function, because if it's called on a None or empty
list, _all_ untracked files in the selected git repository get added,
which is not what we want there.
Wine-Staging switched to staging/patchinstall.py , removing the
deprecated patches/patchinstall.sh in Feb.16, 2023 commit
c1b4af92f7
just before the v8.2 release.
In order to maintain interoperability between older and newer
Wine-Staging versions, try to run first the new script; if it fails,
fall back to the older script.
Whenever using git, be it on Windows CMD, git-bash on Windows, or in
*nix systems, git appears to always use posix-like paths internally.
So, enforce them with posixpath when building/concatenating paths that
are going to be passed to pygit2 functions.
Otherwise, exceptions like the following one happens:
```
File "./winesync.py", line 296, in revert_staged_patchset
self.reactos_index.remove(os.path.join(self.staged_patch_dir, patch_file_name))
[... skipped ...]
OSError: index does not contain sdk\tools\winesync\setupapi_staging\0002-wine-staging-4.0-setupapi_winetest.patch at stage 0
```
(The git index actually contains the specified path, but in "posix" form
with slash-separators.)
On *nix platforms, these changes should not matter.
ctfmon.exe will be a replacement of our
kbswitch.exe in the future. That is the
front-end of Language Bar. It is needed
to support TIPs.
- Add ctfmon.exe at base/applications/ctfmon.
- Add <cicero/cicbase.h>,
<cicero/CModulePath.h>, and
<cicero/osinfo.h> headers and use them.
CORE-19362
## Overview
1. msctfime.ime is an IME file interface
for new-style IMEs a.k.a. "Text Input
Processors" (TIPs).
2. msctfime.ime is loaded as old-style
IME file at ImmLoadLayout in specific
condition.
3. msctfime.ime communicates with
the current TIP (This feature is not
implemented yet).
## Proposed changes
- Add msctfime module at dll/ime/msctfime.
- The functions in this module are currently
stub.
- Move IME file interface declarations from
<imm.h> to <ddk/immdev.h>.
- Modify ImmNotifyIME, NotifyIME, and
ImeProcessKey prototypes for x64
compliance.
CORE-19360