[PATCH 2/2] advapi32: add some advapi32 wmi functions (try 2)

Sebastian Lackner sebastian at fds-team.de
Mon Jun 6 09:38:54 CDT 2016


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 at 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 at 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
> 
> 
> 




More information about the wine-devel mailing list