diff --git a/include/Makefile.in b/include/Makefile.in index b2002a90783..18c33830748 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -671,6 +671,7 @@ HEADER_SRCS = \ winver.h \ wlanapi.h \ wmistr.h \ + wmium.h \ wnaspi32.h \ wownt32.h \ ws2def.h \ diff --git a/include/wmium.h b/include/wmium.h new file mode 100644 index 00000000000..bbb13a3dbf4 --- /dev/null +++ b/include/wmium.h @@ -0,0 +1,116 @@ +/* + * Copyright (C) 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 + */ + +#ifndef _WMIUM_ +#define _WMIUM_ + +#ifdef _WMI_SOURCE_ +#define WMIAPI __stdcall +#else +#define WMIAPI DECLSPEC_IMPORT __stdcall +#endif + +#include +#include +#include + +typedef PVOID WMIHANDLE, *PWMIHANDLE, MOFHANDLE, *PMOFHANDLE; + +#define MOFCI_RESERVED0 0x00000001 +#define MOFCI_RESERVED1 0x00000002 +#define MOFCI_RESERVED2 0x00000004 + +typedef struct +{ + char *ImagePath; + char *ResourceName; + ULONG ResourceSize; + UCHAR *ResourceBuffer; +} MOFRESOURCEINFOA, *PMOFRESOURCEINFOA; + +typedef struct +{ + WCHAR *ImagePath; + WCHAR *ResourceName; + ULONG ResourceSize; + UCHAR *ResourceBuffer; +} MOFRESOURCEINFOW, *PMOFRESOURCEINFOW; + +DECL_WINELIB_TYPE_AW(MOFRESOURCEINFO) +DECL_WINELIB_TYPE_AW(PMOFRESOURCEINFO) + +#ifdef __cplusplus +extern "C" { +#endif + +#define NOTIFICATION_TRACE_FLAG 0x00010000 +#define NOTIFICATION_CALLBACK_DIRECT 0x00000004 +#define NOTIFICATION_CHECK_ACCESS 0x00000008 + +typedef void (WINAPI *NOTIFICATIONCALLBACK)(WNODE_HEADER *, UINT_PTR); + +typedef struct _WMIGUIDINFORMATION +{ + ULONG Size; + BOOLEAN IsExpensive; + BOOLEAN IsEventOnly; +} WMIGUIDINFORMATION, *PWMIGUIDINFORMATION; + +DEFINE_GUID(GUID_REGISTRATION_CHANGE_NOTIFICATION, 0xb48d49a1, 0xe777, 0x11d0, 0xa5, 0xc, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10); +DEFINE_GUID(GUID_MOF_RESOURCE_ADDED_NOTIFICATION, 0xb48d49a2, 0xe777, 0x11d0, 0xa5, 0xc, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10); +DEFINE_GUID(GUID_MOF_RESOURCE_REMOVED_NOTIFICATION, 0xb48d49a3, 0xe777, 0x11d0, 0xa5, 0xc, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10); + +ULONG WMIAPI WmiCloseBlock(WMIHANDLE); +ULONG WMIAPI WmiDevInstToInstanceNameA(char *, ULONG, char *, ULONG); +ULONG WMIAPI WmiDevInstToInstanceNameW(WCHAR *, ULONG, WCHAR *, ULONG); +#define WmiDevInstToInstanceName WINELIB_NAME_AW(WmiDevInstToInstanceName) +ULONG WMIAPI WmiEnumerateGuids(GUID *, ULONG *); +ULONG WMIAPI WmiExecuteMethodA(WMIHANDLE, const char *, ULONG, ULONG, void *, ULONG *, void *); +ULONG WMIAPI WmiExecuteMethodW(WMIHANDLE, const WCHAR *, ULONG, ULONG, void *, ULONG *, void *); +#define WmiExecuteMethod WINELIB_NAME_AW(WmiExecuteMethod) +ULONG WMIAPI WmiFileHandleToInstanceNameA(WMIHANDLE, HANDLE, ULONG *, char *); +ULONG WMIAPI WmiFileHandleToInstanceNameW(WMIHANDLE, HANDLE, ULONG *, WCHAR *); +#define WmiFileHandleToInstanceName WINELIB_NAME_AW(WmiFileHandleToInstanceName) +void WMIAPI WmiFreeBuffer(void *); +#define WmiInsertTimestamp(WnodeHeader) GetSystemTimeAsFileTime((FILETIME *)&((WNODE_HEADER *)WnodeHeader)->TimeStamp) +ULONG WMIAPI WmiMofEnumerateResourcesA(MOFHANDLE, ULONG *, MOFRESOURCEINFOA **); +ULONG WMIAPI WmiMofEnumerateResourcesW(MOFHANDLE, ULONG *, MOFRESOURCEINFOW **); +#define WmiMofEnumerateResources WINELIB_NAME_AW(WmiMofEnumerateResources) +ULONG WMIAPI WmiNotificationRegistrationA(GUID *, BOOLEAN, void *, ULONG_PTR, ULONG); +ULONG WMIAPI WmiNotificationRegistrationW(GUID *, BOOLEAN, void *, ULONG_PTR, ULONG); +#define WmiNotificationRegistration WINELIB_NAME_AW(WmiNotificationRegistration) +ULONG WMIAPI WmiOpenBlock(GUID *, ULONG, WMIHANDLE *); +ULONG WMIAPI WmiQueryAllDataA(WMIHANDLE, ULONG *, void *); +ULONG WMIAPI WmiQueryAllDataW(WMIHANDLE, ULONG *, void *); +#define WmiQueryAllData WINELIB_NAME_AW(WmiQueryAllData) +ULONG WMIAPI WmiQueryGuidInformation(WMIHANDLE, WMIGUIDINFORMATION *); +ULONG WMIAPI WmiQuerySingleInstanceA(WMIHANDLE, const char *, ULONG *, void *); +ULONG WMIAPI WmiQuerySingleInstanceW(WMIHANDLE, const WCHAR *, ULONG *, void *); +#define WmiQuerySingleInstance WINELIB_NAME_AW(WmiQuerySingleInstance) +ULONG WMIAPI WmiSetSingleInstanceA(WMIHANDLE, const char *, ULONG, ULONG, void *); +ULONG WMIAPI WmiSetSingleInstanceW(WMIHANDLE, const WCHAR *, ULONG, ULONG, void *); +#define WmiSetSingleInstance WINELIB_NAME_AW(WmiSetSingleInstance) +ULONG WMIAPI WmiSetSingleItemA(WMIHANDLE, const char *, ULONG, ULONG, ULONG, void *); +ULONG WMIAPI WmiSetSingleItemW(WMIHANDLE, const WCHAR *, ULONG, ULONG, ULONG, void *); +#define WmiSetSingleItem WINELIB_NAME_AW(WmiSetSingleItem) + +#ifdef __cplusplus +} +#endif + +#endif /* _WMIUM_ */