Related to #8145. We shouldn't use
user32 functions in
DllMain.DLL_PROCESS_ATTACH.
This bug affects Global Hook. See
DllMain and "Dynamic-Link Library
Best Practices" on MS Learn.
JIRA issue: CORE-20242
Don't use user32!FindWindow in
DllMain.DLL_PROCESS_ATTACH,
but in KbSwitchSetHooks function.
It's frustrating when windows open
during a test and remain after the test
is over.
JIRA issue: ROSTESTS-402
- Delete closewnd.cpp. Enhance
closewnd.h.
- Modify ShellExecCmdLine,
ShellExec_RunDLL, ShellExecuteEx,
and ShellExecuteW testcases.
- Certainly close the newly-opened
windows.
A bit clearer code. A bit faster execution.
- NtUserGetTitleBarInfo(): Add/Use early returns.
Addendum to
3b4c9ded42 (r33657).
- NtUserTrackPopupMenuEx():
Check flags a bit earlier.
Addendum to
3c35117f97
(0.4.16-dev-1275).
- NtUserThunkedMenuItemInfo():
Sort out code and comments
- menu.c: Move UserLeave() a bit earlier.
- MSGINA: The `pMprNotifyInfo` and `pProfile` structures returned by
`WlxLoggedOutSAS()`, as well as all of their pointer fields, are
allocated by `LocalAlloc()`[^1][^2]. This is what Windows' Winlogon
expects (and ours too, for interoperability with GINA dlls written
for Windows), as it then frees them using `LocalFree()`.
- WINLOGON: In `HandleLogon()`, free the cached `MprNotifyInfo` and
`Profile` buffers (and all their members) obtained from a previous
call to `WlxLoggedOutSAS()`.
[^1]: https://learn.microsoft.com/en-us/windows/win32/api/winwlx/nf-winwlx-wlxloggedoutsas
[^2]: 3rd-party GINAs rely on this as well. One example can be found at:
https://www.codeproject.com/Articles/20656/Winlogon-using-Mobile-Disk
CORE-12686
Test the following compilation scenarii:
- using the `pathcch_static` library (function implementations
statically linked into the test);
- using the `pathcch_kernelbase` library (linking directly to
kernelbase.dll);
- using the `pathcch` MS PSDK-compatible library (linking to
the api-ms-win-core-path-l1-1-0.dll APISET dll).
CORE-12686
This collection of libraries consist in:
- a down-level `pathcch_static` PathCch library, to be used for programs
that need to run on Windows 7 and below;
- Windows 8+ compatible libraries importing from either kernelbase.dll
(`pathcch_kernelbase`), or from the corresponding APISET
api-ms-win-core-path-l1-1-0.dll (`pathcch`, which is Win8+ PSDK
compatible).
The down-level static library is compiled by reusing the newly-introduced
kernelbase's path.c, instead of using a specific pathcch.c.
Unrelated functions are excluded from compilation by putting them into
`#ifndef STATIC_PATHCCH ..... #endif` blocks.
Since VS 17.14.36203.30 / MSVC 19.44.35209.0 the default behavior on ARM64 is to not inline _Interlocked* functions. Until we have those implemented, we disable this feature, going back to the old behavior.
For additional details / tracking of the implementation see CORE-20255