This function has an important role
for new ShellExecute implementation.
JIRA issue: CORE-19278
- Add evalcmd static library into
dll/win32/shell32/evalcmd.
- Implement
SHEvaluateSystemCommandTemplate
in evalcmd.
- Link evalcmd to shell32 and shlwapi.
- Modify shell32.spec and shlwapi.spec.
- Add prototype to <shellapi.h>.
- Add
SHEvaluateSystemCommandTemplate
testcase.
- Define PathIsAbsolute inline
function in <shlwapi_undoc.h>
and use it.
- Use SAL2 annotations; write Doxygen documentation (based on GPT-5.4 feedback).
- Simplify some of the code.
- Add the `ObSetHandleAttributes()` prototype to `ndk/obfuncs.h`,
since it is exported by ntoskrnl.exe
- Simplify the `ObjectHandleFlagInformation` class implementation,
by directly invoking the `ObSetHandleAttributes()` routine.
Addendum to commit 02d0bb9dbd (r22228) that implemented the class,
and to commit 91105c7915 (r61037) that implemented `ObSetHandleAttributes()`.
- Use SAL2 annotations; write Doxygen documentation (based on GPT-5.4
feedback and https://ntdoc.m417z.com/ntsetinformationobject).
Previously this was mixed with vcruntime, with some objects being shared. But this is messy. Instead use a separate library and link ucrtbase to this as well. This also matches more closely how native libraries are organized, where vcstartup is merged into the CRT import libraries, while vcruntime is merged into the static CRT libraries.
These are used by wine for exports that re-export the import stub function from an import library.
We don't need to do anything here, so simply ignore it.
VS2022 version 17.2 and later (`_MSC_VER >= 1932`) added new intrinsic
functions (`strncmp`, `strncpy`, `wcsncmp`, and `wcsncpy`).
As we implement these ourselves, we have to avoid compiler error C2169.
This problem surfaced with a recent GitHub Actions update:
https://github.com/actions/runner-images/issues/14017
Use `#pragma function(...)` to disable new intrinsic functions.
The build uses -nostdlib which prevents GCC from auto-linking libgcc_eh.a. This library provides the SEH unwind symbols (_Unwind_Resume, __emutls_get_address, etc.) needed by C++ exception handling. Without it, any C++ target compiled with -fexceptions fails to link with undefined references to these symbols.
Add a libgcc_eh INTERFACE target that conditionally pulls in libgcc_eh.a when the toolchain provides it (as on SEH-enabled x86_64), falling back to a no-op otherwise (SJLJ/DWARF toolchains).
- Write InstallationType to registry.
- If installing as Server Core, set shell to cmd.exe.
- Rename "Product Option" to "Install Type" and adjust relevant variable names.
- Reserve Nano Server installation type for future use.
JIRA issue: CORE-20645
It is the same function as RtlInterlockedPushListSList, but with stdcall calling convention instead of fastcall.
On x86 this is a wrapper, on all other architectures it is simply a forwarder.
Implementing missing features...
JIRA issue: N/A
- Implement CShellDispatch::EjectPC
by using TRAYCMD_EJECT tray
command.
- Add TRAYCMD_SUSPEND and
TRAYCMD_REFRESH_MENU tray
commands (they have no effect)
into <undocshell.h>.
Make our tray window working as
Windows' one.
JIRA issue: CORE-10675
- Add REST_NOCLOSE restriction
to CTrayWindow::DoExitWindows
method.
- Add TRAYCMD_EJECT constant
to <undocshell.h>.
- Implement TRAYCMD_STARTMENU,
TRAYCMD_EJECT,
TRAYCMD_CONTROL_PANEL, and
TRAYCMD_PRINTERS_AND_FAXES
tray commands.
- Add import to setupapi to use
CM_Request_Eject_PC function.
Preparation for new ShellExecute.
JIRA issue: CORE-20467
- Move ASSOCQUERY and
IAssociationElementOld in
<shlwapi_undoc.h> into
<shlobj_undoc.h>.
- Add IQuerySourceOld, IQuerySource,
IObjectWithQuerySource, and
IAssociationArrayInitialize
interfaces into <shlobj_undoc.h>.
- Add some GUIDs into
<shlguid_undoc.h>.
- Do #include <shlwapi_undoc.h>
in sysdm performance.c to fix build.