--
v2: crypt32: Resync world store for default engines in get_chain_engine().
crypt32: Only sync registry store if registry has changed.
crypt32: Do not temporary delete contexts in I_CertUpdateStore().
crypt32: Lock store in MemStore_deleteContext().
crypt32/tests: Add test for chain engine cache update.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7377
This fixes https://bugs.winehq.org/show_bug.cgi?id=52094.
For reference, here's how current_modref is being passed around (before this patch):
```mermaid
graph TB
fii["fixup_imports_ilonly<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
fi["fixup_imports<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
pa["process_attach<br><em style='color:#ff0'>(directly sets current_modref)</em>"]
ld[load_dll]
id["import_dll<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
bin["build_import_name<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
foe["find_ordinal_export<br><em style='color:#0f0'>(uses current_modref for relay)</em>"]
ffe["find_forwarded_export<br><em style='color:#0f0'>(directly uses current_modref)</em>"]
fne[find_named_export]
MI[MODULE_InitDLL]
fii --> ld
fi --> id
pa --> MI -.-> DllMain
id --> bin
id --> ld
id --> foe
id --> fne --> foe --> ffe --> foe
ffe --> fne
ffe --> bin
style DllMain color:red;
```
--
v14: ntdll: Remove superflous NULL check for importer.
ntdll: Properly track refcount on dynamic imports of export forwarders.
ntdll: Explicitly ignore dynamic (GetProcAddress) importers as relay/snoop user module.
ntdll: Eagerly call process_attach() on dynamic imports of export forwarders.
ntdll: Properly track refcount on static imports of export forwarders.
ntdll: Register module dependency for export forwarders regardless of whether the dependency is already loaded.
ntdll: Don't re-add a module dependency if it already exists.
ntdll: Sink module dependency registration towards the end of the
https://gitlab.winehq.org/wine/wine/-/merge_requests/7
Startup and lock counts in native Windows are separate, and the lock count does not decrease when an async result is freed if the platform has been started.
--
v8: rtworkq: Do not cancel pending callbacks when closing a thread pool.
rtworkq/tests: Test queue shutdown with pending items.
rtworkq/tests: Test scheduled items.
mfplat/tests: Check for async result release after canceling work and shutting down.
mfplat/tests: Release callback2 in test_event_queue().
mfplat: Free the inner cookie passed to resolver_create_cancel_object().
https://gitlab.winehq.org/wine/wine/-/merge_requests/7174