On 03.06.2016 03:53, Austin English wrote:
-- -Austin GPG: 14FB D7EA A041 937B
0002-advapi32-add-some-advapi32-wmi-functions-try-2.patch
From 43b496fab6de5cfa6521555d2c09c9d970a0e7ec Mon Sep 17 00:00:00 2001 From: Austin English austinenglish@gmail.com Date: Wed, 1 Jun 2016 23:02:02 -0500 Subject: [PATCH 2/2] advapi32: add some advapi32 wmi functions (try 2)
Signed-off-by: Austin English austinenglish@gmail.com
dlls/advapi32/Makefile.in | 3 +- dlls/advapi32/advapi32.spec | 30 ++++---- dlls/advapi32/eventlog.c | 9 --- dlls/advapi32/wmi.c | 174 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 191 insertions(+), 25 deletions(-) create mode 100644 dlls/advapi32/wmi.c
diff --git a/dlls/advapi32/Makefile.in b/dlls/advapi32/Makefile.in index 6b54295..ff6452a 100644 --- a/dlls/advapi32/Makefile.in +++ b/dlls/advapi32/Makefile.in @@ -18,7 +18,8 @@ C_SRCS = \ lsa.c \ registry.c \ security.c \
- service.c
- service.c \
- wmi.c
IDL_SRCS = svcctl.idl
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec index 3f32aa3..d278d67 100644 --- a/dlls/advapi32/advapi32.spec +++ b/dlls/advapi32/advapi32.spec @@ -795,35 +795,35 @@ # @ stub WmiDevInstToInstanceNameA # @ stub WmiDevInstToInstanceNameW # @ stub WmiEnumerateGuids -# @ stub WmiExecuteMethodA -# @ stub WmiExecuteMethodW +@ stdcall WmiExecuteMethodA(long str long long ptr ptr ptr) +@ stdcall WmiExecuteMethodW(long wstr long long ptr ptr ptr) # @ stub WmiFileHandleToInstanceNameA # @ stub WmiFileHandleToInstanceNameW -# @ stub WmiFreeBuffer +@ stdcall WmiFreeBuffer(ptr) # @ stub WmiGetFirstTraceOffset # @ stub WmiGetNextEvent # @ stub WmiGetTraceHeader -# @ stub WmiMofEnumerateResourcesA -# @ stub WmiMofEnumerateResourcesW -# @ stub WmiNotificationRegistrationA -# @ stub WmiNotificationRegistrationW -@ stdcall WmiOpenBlock(ptr long ptr) +@ stdcall WmiMofEnumerateResourcesA(long ptr ptr) +@ stdcall WmiMofEnumerateResourcesW(long ptr ptr) +@ stdcall WmiNotificationRegistrationA(ptr long ptr ptr long) +@ stdcall WmiNotificationRegistrationW(ptr long ptr ptr long) +@ stdcall WmiOpenBlock(ptr long long) # @ stub WmiOpenTraceWithCursor # @ stub WmiParseTraceEvent -# @ stub WmiQueryAllDataA +@ stdcall WmiQueryAllDataA(long ptr ptr) # @ stub WmiQueryAllDataMultipleA # @ stub WmiQueryAllDataMultipleW -# @ stub WmiQueryAllDataW -# @ stub WmiQueryGuidInformation +@ stdcall WmiQueryAllDataW(long ptr ptr) +@ stdcall WmiQueryGuidInformation(long ptr) # @ stub WmiQuerySingleInstanceA # @ stub WmiQuerySingleInstanceMultipleA # @ stub WmiQuerySingleInstanceMultipleW @ stub WmiQuerySingleInstanceW # @ stub WmiReceiveNotificationsA # @ stub WmiReceiveNotificationsW -# @ stub WmiSetSingleInstanceA -@ stub WmiSetSingleInstanceW -# @ stub WmiSetSingleItemA -# @ stub WmiSetSingleItemW +@ stdcall WmiSetSingleInstanceA(long str long long ptr) +@ stdcall WmiSetSingleInstanceW(long wstr long long ptr) +@ stdcall WmiSetSingleItemA(long str long long long ptr) +@ stdcall WmiSetSingleItemW(long wstr long long long ptr) # @ stub Wow64Win32ApiEntry @ stdcall WriteEncryptedFileRaw(ptr ptr ptr) diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c index 93c164d..7274d98 100644 --- a/dlls/advapi32/eventlog.c +++ b/dlls/advapi32/eventlog.c @@ -964,12 +964,3 @@ ULONG WINAPI EnumerateTraceGuids(PTRACE_GUID_PROPERTIES *propertiesarray, FIXME("%p %d %p: stub\n", propertiesarray, arraycount, guidcount); return ERROR_INVALID_PARAMETER; }
-/******************************************************************************
- WmiOpenBlock [ADVAPI32.@]
- */
-NTSTATUS WINAPI WmiOpenBlock(GUID *guid, ULONG access, PVOID *datablock) -{
- FIXME("%s %d %p: stub\n", debugstr_guid(guid), access, datablock);
- return ERROR_SUCCESS;
-} diff --git a/dlls/advapi32/wmi.c b/dlls/advapi32/wmi.c new file mode 100644 index 0000000..16b6094 --- /dev/null +++ b/dlls/advapi32/wmi.c @@ -0,0 +1,174 @@ +/*
- Win32 advapi/wmi functions
- Copyright 2016 Austin English
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
+#include <stdarg.h>
+#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winternl.h" +#include "wmistr.h"
You should define _WMI_SOURCE_ before including the wmium header file.
+#include "wmium.h"
+#include "wine/unicode.h" +#include "wine/debug.h"
+#include "advapi32_misc.h"
+WINE_DEFAULT_DEBUG_CHANNEL(wmi);
+/******************************************************************************
- WmiExecuteMethodA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiExecuteMethodA(WMIHANDLE handle, const char *instance, ULONG method, ULONG inputsize,
void *inputbuffer, ULONG *outputsize, void *outputbuffer)
+{
- FIXME(": %p %s %u %u %p %p %p stub\n", handle, debugstr_a(instance), method, inputsize, inputbuffer,
outputsize, outputbuffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiExecuteMethodW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiExecuteMethodW(WMIHANDLE handle, const WCHAR *instance, ULONG method, ULONG inputsize,
void *inputbuffer, ULONG *outputsize, void *outputbuffer)
+{
- FIXME(": %p %s %u %u %p %p %p stub\n", handle, debugstr_w(instance), method, inputsize, inputbuffer,
outputsize, outputbuffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiFreeBuffer [ADVAPI32.@]
- */
+void WMIAPI WmiFreeBuffer(void *buffer) +{
- HeapFree(GetProcessHeap(), 0, buffer);
Currently there are no functions to allocate memory, so a stub here would probably be preferred.
+}
+/******************************************************************************
- WmiMofEnumerateResourcesA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiMofEnumerateResourcesA(MOFHANDLE handle, ULONG *count, MOFRESOURCEINFOA **resource) +{
- FIXME(": %p %p %p stub\n", handle, count, resource);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiMofEnumerateResourcesW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiMofEnumerateResourcesW(MOFHANDLE handle, ULONG *count, MOFRESOURCEINFOW **resource) +{
- FIXME(": %p %p %p stub\n", handle, count, resource);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiNotificationRegistrationA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiNotificationRegistrationA(GUID *guid, BOOLEAN enable, void *info, ULONG_PTR *context, ULONG flags) +{
- FIXME(": %p %u %p %p 0x%08x stub\n", guid, enable, info, context, flags);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiNotificationRegistrationW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiNotificationRegistrationW(GUID *guid, BOOLEAN enable, void *info, ULONG_PTR *context, ULONG flags) +{
- FIXME(": %p %u %p %p 0x%08x stub\n", guid, enable, info, context, flags);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiOpenBlock [ADVAPI32.@]
- */
+ULONG WINAPI WmiOpenBlock(GUID *guid, ULONG access, WMIHANDLE *handle) +{
- FIXME("%s %d %p: stub\n", debugstr_guid(guid), access, handle);
- return ERROR_SUCCESS;
+}
+/******************************************************************************
- WmiQueryAllDataA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiQueryAllDataA(WMIHANDLE handle, ULONG *buffersize, void *buffer) +{
- FIXME(": %p %p %p stub\n", handle, buffersize, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiQueryAllDataW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiQueryAllDataW(WMIHANDLE handle, ULONG *buffersize, void *buffer) +{
- FIXME(": %p %p %p stub\n", handle, buffersize, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiQueryGuidInformation [ADVAPI32.@]
- */
+ULONG WMIAPI WmiQueryGuidInformation(WMIHANDLE handle, WMIGUIDINFORMATION *guidinfo) +{
- FIXME(": %p %p stub\n", handle, guidinfo);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiSetSingleInstanceA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiSetSingleInstanceA(WMIHANDLE handle, const char *name, ULONG reserved, ULONG size, void *buffer) +{
- FIXME(": %p %s %u %u %p stub\n", handle, debugstr_a(name), reserved, size, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiSetSingleInstanceW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiSetSingleInstanceW(WMIHANDLE handle, const WCHAR *name, ULONG reserved, ULONG size, void *buffer) +{
- FIXME(": %p %s %u %u %p stub\n", handle, debugstr_w(name), reserved, size, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiSetSingleItemA [ADVAPI32.@]
- */
+ULONG WMIAPI WmiSetSingleItemA(WMIHANDLE handle, const char *name, ULONG id, ULONG reserved, ULONG size, void *buffer) +{
- FIXME(": %p %s %u %u %p stub\n", handle, debugstr_a(name), reserved, size, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
+/******************************************************************************
- WmiSetSingleItemW [ADVAPI32.@]
- */
+ULONG WMIAPI WmiSetSingleItemW(WMIHANDLE handle, const WCHAR *name, ULONG id, ULONG reserved, ULONG size, void *buffer) +{
- FIXME(": %p %s %u %u %p stub\n", handle, debugstr_w(name), reserved, size, buffer);
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
-- 2.7.3