Alexandre Julliard : kernelbase: Implement IsApiSetImplemented().
Alexandre Julliard
julliard at winehq.org
Tue Feb 22 16:06:51 CST 2022
Module: wine
Branch: master
Commit: 77973e7e720dabb57c76b0a971c07ff7e70d36b4
URL: https://source.winehq.org/git/wine.git/?a=commit;h=77973e7e720dabb57c76b0a971c07ff7e70d36b4
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Feb 22 12:38:37 2022 +0100
kernelbase: Implement IsApiSetImplemented().
Signed-off-by: Alexandre Julliard <julliard at 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);
More information about the wine-cvs
mailing list