Module: wine Branch: master Commit: 77973e7e720dabb57c76b0a971c07ff7e70d36b4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=77973e7e720dabb57c76b0a97...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 22 12:38:37 2022 +0100
kernelbase: Implement IsApiSetImplemented().
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/tests/module.c | 1 - dlls/kernelbase/kernelbase.spec | 1 + dlls/kernelbase/loader.c | 16 ++++++++++++++++ include/winbase.h | 1 + 4 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/dlls/kernel32/tests/module.c b/dlls/kernel32/tests/module.c index 58dcfaaec99..6d44b50e122 100644 --- a/dlls/kernel32/tests/module.c +++ b/dlls/kernel32/tests/module.c @@ -1469,7 +1469,6 @@ static void test_apisets(void) return; } if (!pApiSetQueryApiSetPresenceEx) win_skip( "ApiSetQueryApiSetPresenceEx not implemented\n" ); - todo_wine if (!pIsApiSetImplemented) win_skip( "IsApiSetImplemented not implemented\n" );
for (i = 0; i < ARRAY_SIZE(tests); i++) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index a4c14184452..c1175af2f9f 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -868,6 +868,7 @@ # @ stub InternetTimeToSystemTimeW # @ stub InvalidateAppModelVersionCache @ stub InvalidateTzSpecificCache +@ stdcall IsApiSetImplemented(str) @ stdcall IsCharAlphaA(long) @ stdcall IsCharAlphaNumericA(long) @ stdcall IsCharAlphaNumericW(long) diff --git a/dlls/kernelbase/loader.c b/dlls/kernelbase/loader.c index 02d72cfbfbf..0fd2d7b7c99 100644 --- a/dlls/kernelbase/loader.c +++ b/dlls/kernelbase/loader.c @@ -467,6 +467,22 @@ FARPROC WINAPI DECLSPEC_HOTPATCH GetProcAddress( HMODULE module, LPCSTR function #endif /* __x86_64__ */
+/*********************************************************************** + * IsApiSetImplemented (kernelbase.@) + */ +BOOL WINAPI IsApiSetImplemented( LPCSTR name ) +{ + UNICODE_STRING str; + NTSTATUS status; + BOOLEAN in_schema, present; + + if (!RtlCreateUnicodeStringFromAsciiz( &str, name )) return FALSE; + status = ApiSetQueryApiSetPresenceEx( &str, &in_schema, &present ); + RtlFreeUnicodeString( &str ); + return !status && present; +} + + /*********************************************************************** * LoadLibraryA (kernelbase.@) */ diff --git a/include/winbase.h b/include/winbase.h index a8744eb417a..a0c62d710b9 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2406,6 +2406,7 @@ WINBASEAPI VOID WINAPI InitOnceInitialize(PINIT_ONCE); WINBASEAPI PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER); WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER); WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); +WINBASEAPI BOOL WINAPI IsApiSetImplemented(LPCSTR); WINBASEAPI BOOL WINAPI IsBadCodePtr(FARPROC); WINBASEAPI BOOL WINAPI IsBadHugeReadPtr(LPCVOID,UINT_PTR); WINBASEAPI BOOL WINAPI IsBadHugeWritePtr(LPVOID,UINT_PTR);