https://git.reactos.org/?p=reactos.git;a=commitdiff;h=edccad14bfa59ba6c0c70843431169c91ab2677a
commit edccad14bfa59ba6c0c70843431169c91ab2677a Author: Amine Khaldi <amine.kha...@reactos.org> AuthorDate: Sat Mar 24 13:12:50 2018 +0100 Commit: Amine Khaldi <amine.kha...@reactos.org> CommitDate: Sat Mar 24 13:12:50 2018 +0100 [WBEMPROX] Sync with Wine Staging 3.3. CORE-14434 --- dll/win32/wbemprox/CMakeLists.txt | 4 +- dll/win32/wbemprox/builtin.c | 232 +++++++++++++++++++++++++++++----- dll/win32/wbemprox/class.c | 13 ++ dll/win32/wbemprox/main.c | 17 ++- dll/win32/wbemprox/precomp.h | 28 ++++ dll/win32/wbemprox/process.c | 12 ++ dll/win32/wbemprox/qualifier.c | 13 ++ dll/win32/wbemprox/query.c | 12 +- dll/win32/wbemprox/reg.c | 14 ++ dll/win32/wbemprox/security.c | 13 +- dll/win32/wbemprox/service.c | 13 ++ dll/win32/wbemprox/services.c | 14 ++ dll/win32/wbemprox/table.c | 12 +- dll/win32/wbemprox/wbemlocator.c | 14 ++ dll/win32/wbemprox/wbemprox_private.h | 54 +------- dll/win32/wbemprox/wql.tab.c | 192 +++++++++++++++------------- dll/win32/wbemprox/wql.tab.h | 104 +++++++++++++++ dll/win32/wbemprox/wql.y | 12 ++ media/doc/README.WINE | 2 +- 19 files changed, 595 insertions(+), 180 deletions(-) diff --git a/dll/win32/wbemprox/CMakeLists.txt b/dll/win32/wbemprox/CMakeLists.txt index b2495e176d..ac67fdf9cf 100644 --- a/dll/win32/wbemprox/CMakeLists.txt +++ b/dll/win32/wbemprox/CMakeLists.txt @@ -20,7 +20,7 @@ list(APPEND SOURCE table.c wbemlocator.c wql.tab.c - wbemprox_private.h) + precomp.h) add_library(wbemprox SHARED ${SOURCE} @@ -33,5 +33,5 @@ set_module_type(wbemprox win32dll) target_link_libraries(wbemprox uuid wine) add_importlibs(wbemprox iphlpapi oleaut32 advapi32 user32 gdi32 version winspool ws2_32 rpcrt4 msvcrt kernel32 ntdll) add_dependencies(wbemprox d3d_idl_headers) -add_pch(wbemprox wbemprox_private.h SOURCE) +add_pch(wbemprox precomp.h SOURCE) add_cd_file(TARGET wbemprox DESTINATION reactos/system32/wbem FOR all) diff --git a/dll/win32/wbemprox/builtin.c b/dll/win32/wbemprox/builtin.c index d32b72f9fb..8728bd3e2a 100644 --- a/dll/win32/wbemprox/builtin.c +++ b/dll/win32/wbemprox/builtin.c @@ -16,20 +16,58 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "wbemprox_private.h" +#define COBJMACROS +#define NONAMELESSUNION +#define NONAMELESSSTRUCT + +#include "config.h" +#include <stdarg.h> +#include <fcntl.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +#ifdef HAVE_ARPA_INET_H +# include <arpa/inet.h> +#endif -#include <winuser.h> +#include "ntstatus.h" +#define WIN32_NO_STATUS +#include "windef.h" +#include "winbase.h" +#ifdef __MINGW32__ +# include "winsock2.h" +# include "ws2tcpip.h" +# define WS_AF_UNSPEC AF_UNSPEC +# define WS_NI_MAXHOST NI_MAXHOST +# define WS_NI_NAMEREQD NI_NAMEREQD +#else +# define USE_WS_PREFIX +# include "winsock2.h" +# include "ws2tcpip.h" +#endif +#include "initguid.h" +#include "wbemcli.h" +#include "wbemprov.h" +#include "iphlpapi.h" +#include "tlhelp32.h" +#ifndef __REACTOS__ +#include "d3d10.h" +#endif +#include "winternl.h" +#include "winioctl.h" +#include "winsvc.h" +#include "winver.h" +#include "sddl.h" +#include "ntsecapi.h" +#ifdef __REACTOS__ #include <wingdi.h> -#include <winsock2.h> -#include <ws2tcpip.h> -#include <iphlpapi.h> -#include <tlhelp32.h> -#include <winternl.h> -#include <winioctl.h> -#include <winver.h> -#include <ntsecapi.h> -#include <winspool.h> -#include <sddl.h> +#endif +#include "winspool.h" + +#include "wine/debug.h" +#include "wbemprox_private.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); static const WCHAR class_baseboardW[] = {'W','i','n','3','2','_','B','a','s','e','B','o','a','r','d',0}; @@ -110,6 +148,8 @@ static const WCHAR prop_adaptertypeW[] = {'A','d','a','p','t','e','r','T','y','p','e',0}; static const WCHAR prop_addresswidthW[] = {'A','d','d','r','e','s','s','W','i','d','t','h',0}; +static const WCHAR prop_architectureW[] = + {'A','r','c','h','i','t','e','c','t','u','r','e',0}; static const WCHAR prop_attributesW[] = {'A','t','t','r','i','b','u','t','e','s',0}; #ifndef __REACTOS__ @@ -136,6 +176,8 @@ static const WCHAR prop_codesetW[] = {'C','o','d','e','S','e','t',0}; static const WCHAR prop_commandlineW[] = {'C','o','m','m','a','n','d','L','i','n','e',0}; +static const WCHAR prop_configmanagererrorcodeW[] = + {'C','o','n','f','i','g','M','a','n','a','g','e','r','E','r','r','o','r','C','o','d','e',0}; static const WCHAR prop_countrycodeW[] = {'C','o','u','n','t','r','y','C','o','d','e',0}; static const WCHAR prop_cpustatusW[] = @@ -188,6 +230,8 @@ static const WCHAR prop_domainroleW[] = {'D','o','m','a','i','n','R','o','l','e',0}; static const WCHAR prop_driveW[] = {'D','r','i','v','e',0}; +static const WCHAR prop_driverdateW[] = + {'D','r','i','v','e','r','D','a','t','e',0}; static const WCHAR prop_drivernameW[] = {'D','r','i','v','e','r','N','a','m','e',0}; #ifndef __REACTOS__ @@ -204,6 +248,8 @@ static const WCHAR prop_flavorW[] = {'F','l','a','v','o','r',0}; static const WCHAR prop_freespaceW[] = {'F','r','e','e','S','p','a','c','e',0}; +static const WCHAR prop_freephysicalmemoryW[] = + {'F','r','e','e','P','h','y','s','i','c','a','l','M','e','m','o','r','y',0}; static const WCHAR prop_handleW[] = {'H','a','n','d','l','e',0}; static const WCHAR prop_horizontalresolutionW[] = @@ -218,6 +264,8 @@ static const WCHAR prop_indexW[] = {'I','n','d','e','x',0}; static const WCHAR prop_installdateW[] = {'I','n','s','t','a','l','l','D','a','t','e',0}; +static const WCHAR prop_installeddisplaydriversW[]= + {'I','n','s','t','a','l','l','e','d','D','i','s','p','l','a','y','D','r','i','v','e','r','s',0}; static const WCHAR prop_interfaceindexW[] = {'I','n','t','e','r','f','a','c','e','I','n','d','e','x',0}; static const WCHAR prop_interfacetypeW[] = @@ -230,12 +278,16 @@ static const WCHAR prop_ipenabledW[] = {'I','P','E','n','a','b','l','e','d',0}; static const WCHAR prop_lastbootuptimeW[] = {'L','a','s','t','B','o','o','t','U','p','T','i','m','e',0}; +static const WCHAR prop_levelW[] = + {'L','e','v','e','l',0}; static const WCHAR prop_localW[] = {'L','o','c','a','l',0}; static const WCHAR prop_localdatetimeW[] = {'L','o','c','a','l','D','a','t','e','T','i','m','e',0}; static const WCHAR prop_localeW[] = {'L','o','c','a','l','e',0}; +static const WCHAR prop_locationW[] = + {'L','o','c','a','t','i','o','n',0}; static const WCHAR prop_lockpresentW[] = {'L','o','c','k','P','r','e','s','e','n','t',0}; static const WCHAR prop_macaddressW[] = @@ -282,6 +334,8 @@ static const WCHAR prop_pixelsperxlogicalinchW[] = {'P','i','x','e','l','s','P','e','r','X','L','o','g','i','c','a','l','I','n','c','h',0}; static const WCHAR prop_pnpdeviceidW[] = {'P','N','P','D','e','v','i','c','e','I','D',0}; +static const WCHAR prop_portnameW[] = + {'P','o','r','t','N','a','m','e',0}; static const WCHAR prop_pprocessidW[] = {'P','a','r','e','n','t','P','r','o','c','e','s','s','I','D',0}; static const WCHAR prop_primaryW[] = @@ -300,6 +354,8 @@ static const WCHAR prop_referenceddomainnameW[] = {'R','e','f','e','r','e','n','c','e','d','D','o','m','a','i','n','N','a','m','e',0}; static const WCHAR prop_releasedateW[] = {'R','e','l','e','a','s','e','D','a','t','e',0}; +static const WCHAR prop_revisionW[] = + {'R','e','v','i','s','i','o','n',0}; static const WCHAR prop_serialnumberW[] = {'S','e','r','i','a','l','N','u','m','b','e','r',0}; static const WCHAR prop_servicepackmajorW[] = @@ -310,8 +366,14 @@ static const WCHAR prop_servicetypeW[] = {'S','e','r','v','i','c','e','T','y','p','e',0}; static const WCHAR prop_settingidW[] = {'S','e','t','t','i','n','g','I','D',0}; +static const WCHAR prop_skunumberW[] = + {'S','K','U','N','u','m','b','e','r',0}; static const WCHAR prop_smbiosbiosversionW[] = {'S','M','B','I','O','S','B','I','O','S','V','e','r','s','i','o','n',0}; +static const WCHAR prop_smbiosmajorversionW[] = + {'S','M','B','I','O','S','M','a','j','o','r','V','e','r','s','i','o','n',0}; +static const WCHAR prop_smbiosminorversionW[] = + {'S','M','B','I','O','S','M','i','n','o','r','V','e','r','s','i','o','n',0}; static const WCHAR prop_startmodeW[] = {'S','t','a','r','t','M','o','d','e',0}; static const WCHAR prop_sidW[] = @@ -326,6 +388,8 @@ static const WCHAR prop_startingoffsetW[] = {'S','t','a','r','t','i','n','g','O','f','f','s','e','t',0}; static const WCHAR prop_stateW[] = {'S','t','a','t','e',0}; +static const WCHAR prop_statusW[] = + {'S','t','a','t','u','s',0}; static const WCHAR prop_statusinfoW[] = {'S','t','a','t','u','s','I','n','f','o',0}; static const WCHAR prop_strvalueW[] = @@ -356,6 +420,8 @@ static const WCHAR prop_uuidW[] = {'U','U','I','D',0}; static const WCHAR prop_varianttypeW[] = {'V','a','r','i','a','n','t','T','y','p','e',0}; +static const WCHAR prop_vendorW[] = + {'V','e','n','d','o','r',0}; static const WCHAR prop_versionW[] = {'V','e','r','s','i','o','n',0}; #ifndef __REACTOS__ @@ -395,6 +461,8 @@ static const struct column col_bios[] = { prop_releasedateW, CIM_DATETIME }, { prop_serialnumberW, CIM_STRING }, { prop_smbiosbiosversionW, CIM_STRING }, + { prop_smbiosmajorversionW, CIM_UINT16, VT_I4 }, + { prop_smbiosminorversionW, CIM_UINT16, VT_I4 }, { prop_versionW, CIM_STRING|COL_FLAG_KEY } }; static const struct column col_cdromdrive[] = @@ -421,7 +489,11 @@ static const struct column col_compsys[] = static const struct column col_compsysproduct[] = { { prop_identifyingnumberW, CIM_STRING|COL_FLAG_KEY }, - { prop_uuidW, CIM_STRING|COL_FLAG_DYNAMIC } + { prop_nameW, CIM_STRING|COL_FLAG_KEY }, + { prop_skunumberW, CIM_STRING }, + { prop_uuidW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_vendorW, CIM_STRING }, + { prop_versionW, CIM_STRING|COL_FLAG_KEY } }; static const struct column col_datafile[] = { @@ -512,6 +584,7 @@ static const struct column col_os[] = { prop_codesetW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_countrycodeW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_csdversionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_freephysicalmemoryW, CIM_UINT64 }, { prop_installdateW, CIM_DATETIME }, { prop_lastbootuptimeW, CIM_DATETIME|COL_FLAG_DYNAMIC }, { prop_localdatetimeW, CIM_DATETIME|COL_FLAG_DYNAMIC }, @@ -554,11 +627,14 @@ static const struct column col_physicalmemory[] = static const struct column col_printer[] = { { prop_attributesW, CIM_UINT32 }, + { prop_deviceidW, CIM_STRING|COL_FLAG_DYNAMIC|COL_FLAG_KEY }, { prop_drivernameW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_horizontalresolutionW, CIM_UINT32 }, { prop_localW, CIM_BOOLEAN }, + { prop_locationW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_networkW, CIM_BOOLEAN } + { prop_networkW, CIM_BOOLEAN }, + { prop_portnameW, CIM_STRING|COL_FLAG_DYNAMIC }, }; static const struct column col_process[] = { @@ -577,6 +653,7 @@ static const struct column col_process[] = static const struct column col_processor[] = { { prop_addresswidthW, CIM_UINT16, VT_I4 }, + { prop_architectureW, CIM_UINT16, VT_I4 }, { prop_captionW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_cpustatusW, CIM_UINT16 }, { prop_currentclockspeedW, CIM_UINT32, VT_I4 }, @@ -584,6 +661,7 @@ static const struct column col_processor[] = { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_deviceidW, CIM_STRING|COL_FLAG_DYNAMIC|COL_FLAG_KEY }, { prop_familyW, CIM_UINT16, VT_I4 }, + { prop_levelW, CIM_UINT16, VT_I4 }, { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_maxclockspeedW, CIM_UINT32, VT_I4 }, { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, @@ -591,6 +669,7 @@ static const struct column col_processor[] = { prop_numlogicalprocessorsW, CIM_UINT32, VT_I4 }, { prop_processoridW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_processortypeW, CIM_UINT16, VT_I4 }, + { prop_revisionW, CIM_UINT16, VT_I4 }, { prop_uniqueidW, CIM_STRING }, { prop_versionW, CIM_STRING|COL_FLAG_DYNAMIC } }; @@ -660,24 +739,28 @@ static const struct column col_systemsecurity[] = #ifndef __REACTOS__ static const struct column col_videocontroller[] = { - { prop_adapterdactypeW, CIM_STRING }, - { prop_adapterramW, CIM_UINT32, VT_I4 }, - { prop_availabilityW, CIM_UINT16 }, - { prop_captionW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_currentbitsperpixelW, CIM_UINT32, VT_I4 }, - { prop_currenthorizontalresW, CIM_UINT32, VT_I4 }, - { prop_currentrefreshrateW, CIM_UINT32, VT_I4 }, - { prop_currentscanmodeW, CIM_UINT16, VT_I4 }, - { prop_currentverticalresW, CIM_UINT32, VT_I4 }, - { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, - { prop_driverversionW, CIM_STRING }, - { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_videoarchitectureW, CIM_UINT16, VT_I4 }, - { prop_videomemorytypeW, CIM_UINT16, VT_I4 }, - { prop_videomodedescriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, - { prop_videoprocessorW, CIM_STRING|COL_FLAG_DYNAMIC } + { prop_adapterdactypeW, CIM_STRING }, + { prop_adapterramW, CIM_UINT32, VT_I4 }, + { prop_availabilityW, CIM_UINT16 }, + { prop_captionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_configmanagererrorcodeW, CIM_UINT32, VT_I4 }, + { prop_currentbitsperpixelW, CIM_UINT32, VT_I4 }, + { prop_currenthorizontalresW, CIM_UINT32, VT_I4 }, + { prop_currentrefreshrateW, CIM_UINT32, VT_I4 }, + { prop_currentscanmodeW, CIM_UINT16, VT_I4 }, + { prop_currentverticalresW, CIM_UINT32, VT_I4 }, + { prop_descriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_deviceidW, CIM_STRING|COL_FLAG_KEY }, + { prop_driverdateW, CIM_DATETIME }, + { prop_driverversionW, CIM_STRING }, + { prop_installeddisplaydriversW,CIM_STRING }, + { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_pnpdeviceidW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_statusW, CIM_STRING }, + { prop_videoarchitectureW, CIM_UINT16, VT_I4 }, + { prop_videomemorytypeW, CIM_UINT16, VT_I4 }, + { prop_videomodedescriptionW, CIM_STRING|COL_FLAG_DYNAMIC }, + { prop_videoprocessorW, CIM_STRING|COL_FLAG_DYNAMIC }, }; #endif @@ -722,9 +805,15 @@ static const WCHAR compsys_modelW[] = {'W','i','n','e',0}; static const WCHAR compsysproduct_identifyingnumberW[] = {'0',0}; +static const WCHAR compsysproduct_nameW[] = + {'W','i','n','e',0}; static const WCHAR compsysproduct_uuidW[] = {'d','e','a','d','d','e','a','d','-','d','e','a','d','-','d','e','a','d','-','d','e','a','d','-', 'd','e','a','d','d','e','a','d','d','e','a','d',0}; +static const WCHAR compsysproduct_vendorW[] = + {'T','h','e',' ','W','i','n','e',' ','P','r','o','j','e','c','t',0}; +static const WCHAR compsysproduct_versionW[] = + {'1','.','0',0}; static const WCHAR diskdrive_interfacetypeW[] = {'I','D','E',0}; static const WCHAR diskdrive_manufacturerW[] = @@ -766,8 +855,12 @@ static const WCHAR videocontroller_dactypeW[] = {'I','n','t','e','g','r','a','t','e','d',' ','R','A','M','D','A','C',0}; static const WCHAR videocontroller_deviceidW[] = {'V','i','d','e','o','C','o','n','t','r','o','l','l','e','r','1',0}; +static const WCHAR videocontroller_driverdateW[] = + {'2','0','1','7','0','1','0','1','0','0','0','0','0','0','.','0','0','0','0','0','0','+','0','0','0',0}; static const WCHAR videocontroller_driverversionW[] = {'1','.','0',0}; +static const WCHAR videocontroller_statusW[] = + {'O','K',0}; #endif #include "pshpack1.h" @@ -790,6 +883,8 @@ struct record_bios const WCHAR *releasedate; const WCHAR *serialnumber; const WCHAR *smbiosbiosversion; + UINT16 smbiosmajorversion; + UINT16 smbiosminorversion; const WCHAR *version; }; struct record_cdromdrive @@ -816,7 +911,11 @@ struct record_computersystem struct record_computersystemproduct { const WCHAR *identifyingnumber; + const WCHAR *name; + const WCHAR *skunumber; const WCHAR *uuid; + const WCHAR *vendor; + const WCHAR *version; }; struct record_datafile { @@ -907,6 +1006,7 @@ struct record_operatingsystem const WCHAR *codeset; const WCHAR *countrycode; const WCHAR *csdversion; + UINT64 freephysicalmemory; const WCHAR *installdate; const WCHAR *lastbootuptime; const WCHAR *localdatetime; @@ -949,11 +1049,14 @@ struct record_physicalmemory struct record_printer { UINT32 attributes; + const WCHAR *device_id; const WCHAR *drivername; UINT32 horizontalresolution; int local; + const WCHAR *location; const WCHAR *name; int network; + const WCHAR *portname; }; struct record_process { @@ -972,6 +1075,7 @@ struct record_process struct record_processor { UINT16 addresswidth; + UINT16 architecture; const WCHAR *caption; UINT16 cpu_status; UINT32 currentclockspeed; @@ -979,6 +1083,7 @@ struct record_processor const WCHAR *description; const WCHAR *device_id; UINT16 family; + UINT16 level; const WCHAR *manufacturer; UINT32 maxclockspeed; const WCHAR *name; @@ -986,6 +1091,7 @@ struct record_processor UINT32 num_logical_processors; const WCHAR *processor_id; UINT16 processortype; + UINT16 revision; const WCHAR *unique_id; const WCHAR *version; }; @@ -1057,6 +1163,7 @@ struct record_videocontroller UINT32 adapter_ram; UINT16 availability; const WCHAR *caption; + UINT32 config_errorcode; UINT32 current_bitsperpixel; UINT32 current_horizontalres; UINT32 current_refreshrate; @@ -1064,9 +1171,12 @@ struct record_videocontroller UINT32 current_verticalres; const WCHAR *description; const WCHAR *device_id; + const WCHAR *driverdate; const WCHAR *driverversion; + const WCHAR *installeddriver; const WCHAR *name; const WCHAR *pnpdevice_id; + const WCHAR *status; UINT16 videoarchitecture; UINT16 videomemorytype; const WCHAR *videomodedescription; @@ -1081,7 +1191,7 @@ static const struct record_baseboard data_baseboard[] = static const struct record_bios data_bios[] = { { bios_descriptionW, NULL, bios_manufacturerW, bios_nameW, bios_releasedateW, bios_serialnumberW, - bios_smbiosbiosversionW, bios_versionW } + bios_smbiosbiosversionW, 1, 0, bios_versionW } }; static const struct record_param data_param[] = { @@ -1290,6 +1400,15 @@ static UINT64 get_total_physical_memory(void) return status.ullTotalPhys; } +static UINT64 get_available_physical_memory(void) +{ + MEMORYSTATUSEX status; + + status.dwLength = sizeof(status); + if (!GlobalMemoryStatusEx( &status )) return 1024 * 1024 * 1024; + return status.ullAvailPhys; +} + static WCHAR *get_computername(void) { WCHAR *ret; @@ -1403,7 +1522,11 @@ static enum fill_status fill_compsysproduct( struct table *table, const struct e rec = (struct record_computersystemproduct *)table->data; rec->identifyingnumber = compsysproduct_identifyingnumberW; + rec->name = compsysproduct_nameW; + rec->skunumber = NULL; rec->uuid = get_compsysproduct_uuid(); + rec->vendor = compsysproduct_vendorW; + rec->version = compsysproduct_versionW; if (!match_row( table, row, cond, &status )) free_row_values( table, row ); else row++; @@ -2416,10 +2539,12 @@ static enum fill_status fill_physicalmemory( struct table *table, const struct e static enum fill_status fill_printer( struct table *table, const struct expr *cond ) { + static const WCHAR fmtW[] = {'P','r','i','n','t','e','r','%','d',0}; struct record_printer *rec; enum fill_status status = FILL_STATUS_UNFILTERED; PRINTER_INFO_2W *info; DWORD i, offset = 0, count = 0, size = 0, num_rows = 0; + WCHAR id[20]; EnumPrintersW( PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &size, &count ); if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return FILL_STATUS_FAILED; @@ -2440,11 +2565,15 @@ static enum fill_status fill_printer( struct table *table, const struct expr *co { rec = (struct record_printer *)(table->data + offset); rec->attributes = info[i].Attributes; + sprintfW( id, fmtW, i ); + rec->device_id = heap_strdupW( id ); rec->drivername = heap_strdupW( info[i].pDriverName ); rec->horizontalresolution = info[i].pDevMode->u1.s1.dmPrintQuality; rec->local = -1; + rec->location = heap_strdupW( info[i].pLocation ); rec->name = heap_strdupW( info[i].pPrinterName ); rec->network = 0; + rec->portname = heap_strdupW( info[i].pPortName ); if (!match_row( table, i, cond, &status )) { free_row_values( table, i ); @@ -2561,6 +2690,12 @@ static void get_processor_version( WCHAR *version ) do_cpuid( 1, regs ); sprintfW( version, fmtW, (regs[0] & (15 << 4)) >> 4, regs[0] & 15 ); } +static UINT16 get_processor_revision(void) +{ + unsigned int regs[4] = {0, 0, 0, 0}; + do_cpuid( 1, regs ); + return regs[0]; +} static void get_processor_id( WCHAR *processor_id ) { static const WCHAR fmtW[] = {'%','0','8','X','%','0','8','X',0}; @@ -2655,6 +2790,7 @@ static enum fill_status fill_processor( struct table *table, const struct expr * { rec = (struct record_processor *)(table->data + offset); rec->addresswidth = get_osarchitecture() == os_32bitW ? 32 : 64; + rec->architecture = get_osarchitecture() == os_32bitW ? 0 : 9; rec->caption = heap_strdupW( caption ); rec->cpu_status = 1; /* CPU Enabled */ rec->currentclockspeed = get_processor_currentclockspeed( i ); @@ -2663,6 +2799,7 @@ static enum fill_status fill_processor( struct table *table, const struct expr * sprintfW( device_id, fmtW, i ); rec->device_id = heap_strdupW( device_id ); rec->family = 2; /* Unknown */ + rec->level = 15; rec->manufacturer = heap_strdupW( manufacturer ); rec->maxclockspeed = get_processor_maxclockspeed( i ); rec->name = heap_strdupW( name ); @@ -2670,6 +2807,7 @@ static enum fill_status fill_processor( struct table *table, const struct expr * rec->num_logical_processors = num_logical_processors; rec->processor_id = heap_strdupW( processor_id ); rec->processortype = 3; /* central processor */ + rec->revision = get_processor_revision(); rec->unique_id = NULL; rec->version = heap_strdupW( version ); if (!match_row( table, i, cond, &status )) @@ -2856,6 +2994,7 @@ static enum fill_status fill_os( struct table *table, const struct expr *cond ) rec->codeset = get_codeset(); rec->countrycode = get_countrycode(); rec->csdversion = ver.szCSDVersion[0] ? heap_strdupW( ver.szCSDVersion ) : NULL; + rec->freephysicalmemory = get_available_physical_memory() / 1024; rec->installdate = os_installdateW; rec->lastbootuptime = get_lastbootuptime(); rec->localdatetime = get_localdatetime(); @@ -3160,6 +3299,29 @@ static WCHAR *get_pnpdeviceid( DXGI_ADAPTER_DESC *desc ) return ret; } +#define HW_VENDOR_AMD 0x1002 +#define HW_VENDOR_NVIDIA 0x10de +#define HW_VENDOR_VMWARE 0x15ad +#define HW_VENDOR_INTEL 0x8086 + +static const WCHAR *get_installeddriver( UINT vendorid ) +{ + static const WCHAR driver_amdW[] = {'a','t','i','c','f','x','3','2','.','d','l','l',0}; + static const WCHAR driver_intelW[] = {'i','g','d','u','m','d','i','m','3','2','.','d','l','l',0}; + static const WCHAR driver_nvidiaW[] = {'n','v','d','3','d','u','m','.','d','l','l',0}; + static const WCHAR driver_wineW[] = {'w','i','n','e','.','d','l','l',0}; + + /* FIXME: wined3d has a better table, but we can not access this information through dxgi */ + + if (vendorid == HW_VENDOR_AMD) + return driver_amdW; + else if (vendorid == HW_VENDOR_NVIDIA) + return driver_nvidiaW; + else if (vendorid == HW_VENDOR_INTEL) + return driver_intelW; + return driver_wineW; +} + static enum fill_status fill_videocontroller( struct table *table, const struct expr *cond ) { static const WCHAR fmtW[] = {'%','u',' ','x',' ','%','u',' ','x',' ','%','I','6','4','u',' ','c','o','l','o','r','s',0}; @@ -3194,6 +3356,7 @@ done: rec->adapter_dactype = videocontroller_dactypeW; rec->adapter_ram = vidmem; rec->availability = 3; /* Running or Full Power */ + rec->config_errorcode = 0; /* no error */ rec->caption = heap_strdupW( name ); rec->current_bitsperpixel = get_bits_per_pixel( &hres, &vres ); rec->current_horizontalres = hres; @@ -3202,9 +3365,12 @@ done: rec->current_verticalres = vres; rec->description = heap_strdupW( name ); rec->device_id = videocontroller_deviceidW; + rec->driverdate = videocontroller_driverdateW; rec->driverversion = videocontroller_driverversionW; + rec->installeddriver = get_installeddriver( desc.VendorId ); rec->name = heap_strdupW( name ); rec->pnpdevice_id = get_pnpdeviceid( &desc ); + rec->status = videocontroller_statusW; rec->videoarchitecture = 2; /* Unknown */ rec->videomemorytype = 2; /* Unknown */ wsprintfW( mode, fmtW, hres, vres, (UINT64)1 << rec->current_bitsperpixel ); diff --git a/dll/win32/wbemprox/class.c b/dll/win32/wbemprox/class.c index 3d3e777861..27229bd69a 100644 --- a/dll/win32/wbemprox/class.c +++ b/dll/win32/wbemprox/class.c @@ -16,8 +16,21 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + struct enum_class_object { IEnumWbemClassObject IEnumWbemClassObject_iface; diff --git a/dll/win32/wbemprox/main.c b/dll/win32/wbemprox/main.c index 214dfd7a41..e6ccd5c21c 100644 --- a/dll/win32/wbemprox/main.c +++ b/dll/win32/wbemprox/main.c @@ -17,10 +17,23 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include "config.h" + +#include <stdarg.h> + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wbemcli.h" +#include "wbemprov.h" +#include "rpcproxy.h" + #include "wbemprox_private.h" +#include "wine/debug.h" -#include <wbemprov.h> -#include <rpcproxy.h> +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); static HINSTANCE instance; diff --git a/dll/win32/wbemprox/precomp.h b/dll/win32/wbemprox/precomp.h new file mode 100644 index 0000000000..54f2817c4c --- /dev/null +++ b/dll/win32/wbemprox/precomp.h @@ -0,0 +1,28 @@ + +#ifndef _WBEMPROX_PRECOMP_H_ +#define _WBEMPROX_PRECOMP_H_ + +#include <wine/config.h> + +#include <stdarg.h> + +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H + +#define COBJMACROS +#define NONAMELESSUNION +#define NONAMELESSSTRUCT + +#include <ntstatus.h> +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <winuser.h> +#include <winsvc.h> +#include <objbase.h> +#include <oleauto.h> +#include <wbemcli.h> + +#include "wbemprox_private.h" + +#endif /* !_WBEMPROX_PRECOMP_H_ */ diff --git a/dll/win32/wbemprox/process.c b/dll/win32/wbemprox/process.c index 0f22a8d87e..6bc3f37529 100644 --- a/dll/win32/wbemprox/process.c +++ b/dll/win32/wbemprox/process.c @@ -18,8 +18,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + static HRESULT get_owner( VARIANT *user, VARIANT *domain, VARIANT *retval ) { DWORD len; diff --git a/dll/win32/wbemprox/qualifier.c b/dll/win32/wbemprox/qualifier.c index c14338698c..4da34454ae 100644 --- a/dll/win32/wbemprox/qualifier.c +++ b/dll/win32/wbemprox/qualifier.c @@ -16,8 +16,21 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + struct qualifier_set { IWbemQualifierSet IWbemQualifierSet_iface; diff --git a/dll/win32/wbemprox/query.c b/dll/win32/wbemprox/query.c index 3e37f4277f..76f5caa634 100644 --- a/dll/win32/wbemprox/query.c +++ b/dll/win32/wbemprox/query.c @@ -16,9 +16,19 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" -#include <winuser.h> +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); HRESULT create_view( const struct property *proplist, const WCHAR *class, const struct expr *cond, struct view **ret ) diff --git a/dll/win32/wbemprox/reg.c b/dll/win32/wbemprox/reg.c index 247dcaafa3..b0bacd7ab8 100644 --- a/dll/win32/wbemprox/reg.c +++ b/dll/win32/wbemprox/reg.c @@ -18,9 +18,23 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" +#ifdef __REACTOS__ #include <winreg.h> +#endif + +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); static HRESULT to_bstr_array( BSTR *strings, DWORD count, VARIANT *var ) { diff --git a/dll/win32/wbemprox/security.c b/dll/win32/wbemprox/security.c index 8b109294d2..d3057e01f5 100644 --- a/dll/win32/wbemprox/security.c +++ b/dll/win32/wbemprox/security.c @@ -18,9 +18,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" +#include "iads.h" + +#include "wine/debug.h" #include "wbemprox_private.h" -#include <iads.h> +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); static HRESULT to_byte_array( void *data, DWORD size, VARIANT *var ) { diff --git a/dll/win32/wbemprox/service.c b/dll/win32/wbemprox/service.c index 6c09f76af1..b096c5ceb9 100644 --- a/dll/win32/wbemprox/service.c +++ b/dll/win32/wbemprox/service.c @@ -18,8 +18,21 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" +#include "winsvc.h" + +#include "wine/debug.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + static UINT map_error( DWORD error ) { switch (error) diff --git a/dll/win32/wbemprox/services.c b/dll/win32/wbemprox/services.c index 70d1442d8c..fd87feb12e 100644 --- a/dll/win32/wbemprox/services.c +++ b/dll/win32/wbemprox/services.c @@ -16,8 +16,22 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" +#include "wine/unicode.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + struct client_security { IClientSecurity IClientSecurity_iface; diff --git a/dll/win32/wbemprox/table.c b/dll/win32/wbemprox/table.c index 6c53a06676..ad56e0c7ba 100644 --- a/dll/win32/wbemprox/table.c +++ b/dll/win32/wbemprox/table.c @@ -16,9 +16,19 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" #include "wbemprox_private.h" -#include <winuser.h> +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); HRESULT get_column_index( const struct table *table, const WCHAR *name, UINT *column ) { diff --git a/dll/win32/wbemprox/wbemlocator.c b/dll/win32/wbemprox/wbemlocator.c index 36eba95025..6ed0aed59e 100644 --- a/dll/win32/wbemprox/wbemlocator.c +++ b/dll/win32/wbemprox/wbemlocator.c @@ -16,8 +16,22 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wbemcli.h" + +#include "wine/debug.h" +#include "wine/unicode.h" #include "wbemprox_private.h" +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + typedef struct { IWbemLocator IWbemLocator_iface; diff --git a/dll/win32/wbemprox/wbemprox_private.h b/dll/win32/wbemprox/wbemprox_private.h index 87fc719004..a2696bb459 100644 --- a/dll/win32/wbemprox/wbemprox_private.h +++ b/dll/win32/wbemprox/wbemprox_private.h @@ -16,34 +16,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifndef _WBEMPROX_PRIVATE_H_ -#define _WBEMPROX_PRIVATE_H_ +#pragma once -#include <config.h> - -#include <stdarg.h> - -#define _INC_WINDOWS -#define COM_NO_WINDOWS_H - -#define COBJMACROS -#define NONAMELESSUNION -#define NONAMELESSSTRUCT - -#include <ntstatus.h> -#define WIN32_NO_STATUS -#include <windef.h> -#include <winbase.h> -#include <winsvc.h> -#include <objbase.h> -#include <oleauto.h> -#include <wbemcli.h> - -#include <wine/debug.h> -#include <wine/list.h> -#include <wine/unicode.h> - -WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); +#include "wine/debug.h" +#include "wine/heap.h" +#include "wine/list.h" +#include "wine/unicode.h" IClientSecurity client_security DECLSPEC_HIDDEN; struct list *table_list DECLSPEC_HIDDEN; @@ -252,26 +230,6 @@ HRESULT service_stop_service(IWbemClassObject *, IWbemClassObject *, IWbemClassO HRESULT security_get_sd(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN; HRESULT security_set_sd(IWbemClassObject *, IWbemClassObject *, IWbemClassObject **) DECLSPEC_HIDDEN; -static inline void* __WINE_ALLOC_SIZE(1) heap_alloc(size_t size) -{ - return HeapAlloc(GetProcessHeap(), 0, size); -} - -static inline void* __WINE_ALLOC_SIZE(1) heap_alloc_zero(size_t size) -{ - return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); -} - -static inline void* __WINE_ALLOC_SIZE(2) heap_realloc(void *mem, size_t size) -{ - return HeapReAlloc(GetProcessHeap(), 0, mem, size); -} - -static inline BOOL heap_free(void *mem) -{ - return HeapFree(GetProcessHeap(), 0, mem); -} - static inline WCHAR *heap_strdupW( const WCHAR *src ) { WCHAR *dst; @@ -308,5 +266,3 @@ static const WCHAR param_typesW[] = {'T','y','p','e','s',0}; static const WCHAR param_userW[] = {'U','s','e','r',0}; static const WCHAR param_valueW[] = {'s','V','a','l','u','e',0}; static const WCHAR param_valuenameW[] = {'s','V','a','l','u','e','N','a','m','e',0}; - -#endif /* _WBEMPROX_PRIVATE_H_ */ diff --git a/dll/win32/wbemprox/wql.tab.c b/dll/win32/wbemprox/wql.tab.c index 4eaadd0818..13baba575c 100644 --- a/dll/win32/wbemprox/wql.tab.c +++ b/dll/win32/wbemprox/wql.tab.c @@ -89,8 +89,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" #include "wbemprox_private.h" +#include "wine/list.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + struct parser { const WCHAR *cmd; @@ -243,7 +255,7 @@ static int wql_lex( void *val, struct parser *parser ); result = current_view -#line 247 "wql.tab.c" /* yacc.c:339 */ +#line 259 "wql.tab.c" /* yacc.c:339 */ # ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus @@ -263,8 +275,8 @@ static int wql_lex( void *val, struct parser *parser ); /* In a future release of Bison, this section will be replaced by #include "wql.tab.h". */ -#ifndef YY_WQL_E_REACTOSSYNC3_0_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED -# define YY_WQL_E_REACTOSSYNC3_0_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED +#ifndef YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED +# define YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -315,7 +327,7 @@ extern int wql_debug; typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 182 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:355 */ +#line 194 "wql.y" /* yacc.c:355 */ struct string str; WCHAR *string; @@ -324,7 +336,7 @@ union YYSTYPE struct expr *expr; int integer; -#line 328 "wql.tab.c" /* yacc.c:355 */ +#line 340 "wql.tab.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -334,11 +346,11 @@ union YYSTYPE int wql_parse (struct parser *ctx); -#endif /* !YY_WQL_E_REACTOSSYNC3_0_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED */ +#endif /* !YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 342 "wql.tab.c" /* yacc.c:358 */ +#line 354 "wql.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -619,11 +631,11 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 209, 209, 221, 233, 248, 249, 253, 260, 266, - 275, 284, 291, 297, 303, 309, 315, 321, 327, 333, - 339, 345, 351, 357, 363, 369, 375, 381, 387, 393, - 399, 405, 411, 417, 423, 432, 441, 450, 456, 462, - 468 + 0, 221, 221, 233, 245, 260, 261, 265, 272, 278, + 287, 296, 303, 309, 315, 321, 327, 333, 339, 345, + 351, 357, 363, 369, 375, 381, 387, 393, 399, 405, + 411, 417, 423, 429, 435, 444, 453, 462, 468, 474, + 480 }; #endif @@ -1448,7 +1460,7 @@ yyreduce: switch (yyn) { case 2: -#line 210 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 222 "wql.y" /* yacc.c:1646 */ { HRESULT hr; struct parser *parser = ctx; @@ -1460,11 +1472,11 @@ yyreduce: PARSER_BUBBLE_UP_VIEW( parser, (yyval.view), view ); } -#line 1464 "wql.tab.c" /* yacc.c:1646 */ +#line 1476 "wql.tab.c" /* yacc.c:1646 */ break; case 3: -#line 222 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 234 "wql.y" /* yacc.c:1646 */ { HRESULT hr; struct parser *parser = ctx; @@ -1476,11 +1488,11 @@ yyreduce: PARSER_BUBBLE_UP_VIEW( parser, (yyval.view), view ); } -#line 1480 "wql.tab.c" /* yacc.c:1646 */ +#line 1492 "wql.tab.c" /* yacc.c:1646 */ break; case 4: -#line 234 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 246 "wql.y" /* yacc.c:1646 */ { HRESULT hr; struct parser *parser = ctx; @@ -1492,355 +1504,355 @@ yyreduce: PARSER_BUBBLE_UP_VIEW( parser, (yyval.view), view ); } -#line 1496 "wql.tab.c" /* yacc.c:1646 */ +#line 1508 "wql.tab.c" /* yacc.c:1646 */ break; case 6: -#line 250 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 262 "wql.y" /* yacc.c:1646 */ { (yyvsp[-2].proplist)->next = (yyvsp[0].proplist); } -#line 1504 "wql.tab.c" /* yacc.c:1646 */ +#line 1516 "wql.tab.c" /* yacc.c:1646 */ break; case 7: -#line 254 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 266 "wql.y" /* yacc.c:1646 */ { (yyval.proplist) = NULL; } -#line 1512 "wql.tab.c" /* yacc.c:1646 */ +#line 1524 "wql.tab.c" /* yacc.c:1646 */ break; case 8: -#line 261 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 273 "wql.y" /* yacc.c:1646 */ { (yyval.proplist) = alloc_property( ctx, (yyvsp[-2].string), (yyvsp[0].string) ); if (!(yyval.proplist)) YYABORT; } -#line 1522 "wql.tab.c" /* yacc.c:1646 */ +#line 1534 "wql.tab.c" /* yacc.c:1646 */ break; case 9: -#line 267 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 279 "wql.y" /* yacc.c:1646 */ { (yyval.proplist) = alloc_property( ctx, NULL, (yyvsp[0].string) ); if (!(yyval.proplist)) YYABORT; } -#line 1532 "wql.tab.c" /* yacc.c:1646 */ +#line 1544 "wql.tab.c" /* yacc.c:1646 */ break; case 10: -#line 276 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 288 "wql.y" /* yacc.c:1646 */ { (yyval.string) = get_string( ctx, &(yyvsp[0].str) ); if (!(yyval.string)) YYABORT; } -#line 1542 "wql.tab.c" /* yacc.c:1646 */ +#line 1554 "wql.tab.c" /* yacc.c:1646 */ break; case 11: -#line 285 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 297 "wql.y" /* yacc.c:1646 */ { (yyval.integer) = get_int( ctx ); } -#line 1550 "wql.tab.c" /* yacc.c:1646 */ +#line 1562 "wql.tab.c" /* yacc.c:1646 */ break; case 12: -#line 292 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 304 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); if (!(yyval.expr)) YYABORT; } -#line 1560 "wql.tab.c" /* yacc.c:1646 */ +#line 1572 "wql.tab.c" /* yacc.c:1646 */ break; case 13: -#line 298 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 310 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_AND, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1570 "wql.tab.c" /* yacc.c:1646 */ +#line 1582 "wql.tab.c" /* yacc.c:1646 */ break; case 14: -#line 304 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 316 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_OR, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1580 "wql.tab.c" /* yacc.c:1646 */ +#line 1592 "wql.tab.c" /* yacc.c:1646 */ break; case 15: -#line 310 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 322 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[0].expr), OP_NOT ); if (!(yyval.expr)) YYABORT; } -#line 1590 "wql.tab.c" /* yacc.c:1646 */ +#line 1602 "wql.tab.c" /* yacc.c:1646 */ break; case 16: -#line 316 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 328 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_EQ, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1600 "wql.tab.c" /* yacc.c:1646 */ +#line 1612 "wql.tab.c" /* yacc.c:1646 */ break; case 17: -#line 322 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 334 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_GT, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1610 "wql.tab.c" /* yacc.c:1646 */ +#line 1622 "wql.tab.c" /* yacc.c:1646 */ break; case 18: -#line 328 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 340 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_LT, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1620 "wql.tab.c" /* yacc.c:1646 */ +#line 1632 "wql.tab.c" /* yacc.c:1646 */ break; case 19: -#line 334 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 346 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_LE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1630 "wql.tab.c" /* yacc.c:1646 */ +#line 1642 "wql.tab.c" /* yacc.c:1646 */ break; case 20: -#line 340 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 352 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_GE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1640 "wql.tab.c" /* yacc.c:1646 */ +#line 1652 "wql.tab.c" /* yacc.c:1646 */ break; case 21: -#line 346 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 358 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_NE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1650 "wql.tab.c" /* yacc.c:1646 */ +#line 1662 "wql.tab.c" /* yacc.c:1646 */ break; case 22: -#line 352 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 364 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_EQ, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1660 "wql.tab.c" /* yacc.c:1646 */ +#line 1672 "wql.tab.c" /* yacc.c:1646 */ break; case 23: -#line 358 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 370 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_GT, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1670 "wql.tab.c" /* yacc.c:1646 */ +#line 1682 "wql.tab.c" /* yacc.c:1646 */ break; case 24: -#line 364 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 376 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_LT, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1680 "wql.tab.c" /* yacc.c:1646 */ +#line 1692 "wql.tab.c" /* yacc.c:1646 */ break; case 25: -#line 370 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 382 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_LE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1690 "wql.tab.c" /* yacc.c:1646 */ +#line 1702 "wql.tab.c" /* yacc.c:1646 */ break; case 26: -#line 376 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 388 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_GE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1700 "wql.tab.c" /* yacc.c:1646 */ +#line 1712 "wql.tab.c" /* yacc.c:1646 */ break; case 27: -#line 382 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 394 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_NE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1710 "wql.tab.c" /* yacc.c:1646 */ +#line 1722 "wql.tab.c" /* yacc.c:1646 */ break; case 28: -#line 388 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 400 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_complex( ctx, (yyvsp[-2].expr), OP_LIKE, (yyvsp[0].expr) ); if (!(yyval.expr)) YYABORT; } -#line 1720 "wql.tab.c" /* yacc.c:1646 */ +#line 1732 "wql.tab.c" /* yacc.c:1646 */ break; case 29: -#line 394 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 406 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[-2].expr), OP_ISNULL ); if (!(yyval.expr)) YYABORT; } -#line 1730 "wql.tab.c" /* yacc.c:1646 */ +#line 1742 "wql.tab.c" /* yacc.c:1646 */ break; case 30: -#line 400 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 412 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[-3].expr), OP_NOTNULL ); if (!(yyval.expr)) YYABORT; } -#line 1740 "wql.tab.c" /* yacc.c:1646 */ +#line 1752 "wql.tab.c" /* yacc.c:1646 */ break; case 31: -#line 406 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 418 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[-2].expr), OP_ISNULL ); if (!(yyval.expr)) YYABORT; } -#line 1750 "wql.tab.c" /* yacc.c:1646 */ +#line 1762 "wql.tab.c" /* yacc.c:1646 */ break; case 32: -#line 412 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 424 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[0].expr), OP_ISNULL ); if (!(yyval.expr)) YYABORT; } -#line 1760 "wql.tab.c" /* yacc.c:1646 */ +#line 1772 "wql.tab.c" /* yacc.c:1646 */ break; case 33: -#line 418 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 430 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[-2].expr), OP_NOTNULL ); if (!(yyval.expr)) YYABORT; } -#line 1770 "wql.tab.c" /* yacc.c:1646 */ +#line 1782 "wql.tab.c" /* yacc.c:1646 */ break; case 34: -#line 424 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 436 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_unary( ctx, (yyvsp[0].expr), OP_NOTNULL ); if (!(yyval.expr)) YYABORT; } -#line 1780 "wql.tab.c" /* yacc.c:1646 */ +#line 1792 "wql.tab.c" /* yacc.c:1646 */ break; case 35: -#line 433 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 445 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_sval( ctx, &(yyvsp[0].str) ); if (!(yyval.expr)) YYABORT; } -#line 1790 "wql.tab.c" /* yacc.c:1646 */ +#line 1802 "wql.tab.c" /* yacc.c:1646 */ break; case 36: -#line 442 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 454 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_propval( ctx, (yyvsp[0].proplist) ); if (!(yyval.expr)) YYABORT; } -#line 1800 "wql.tab.c" /* yacc.c:1646 */ +#line 1812 "wql.tab.c" /* yacc.c:1646 */ break; case 37: -#line 451 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 463 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_ival( ctx, (yyvsp[0].integer) ); if (!(yyval.expr)) YYABORT; } -#line 1810 "wql.tab.c" /* yacc.c:1646 */ +#line 1822 "wql.tab.c" /* yacc.c:1646 */ break; case 38: -#line 457 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 469 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_sval( ctx, &(yyvsp[0].str) ); if (!(yyval.expr)) YYABORT; } -#line 1820 "wql.tab.c" /* yacc.c:1646 */ +#line 1832 "wql.tab.c" /* yacc.c:1646 */ break; case 39: -#line 463 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 475 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_bval( ctx, -1 ); if (!(yyval.expr)) YYABORT; } -#line 1830 "wql.tab.c" /* yacc.c:1646 */ +#line 1842 "wql.tab.c" /* yacc.c:1646 */ break; case 40: -#line 469 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1646 */ +#line 481 "wql.y" /* yacc.c:1646 */ { (yyval.expr) = expr_bval( ctx, 0 ); if (!(yyval.expr)) YYABORT; } -#line 1840 "wql.tab.c" /* yacc.c:1646 */ +#line 1852 "wql.tab.c" /* yacc.c:1646 */ break; -#line 1844 "wql.tab.c" /* yacc.c:1646 */ +#line 1856 "wql.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2068,7 +2080,7 @@ yyreturn: #endif return yyresult; } -#line 476 "e:/reactosSync3.0/dll/win32/wbemprox/wql.y" /* yacc.c:1906 */ +#line 488 "wql.y" /* yacc.c:1906 */ HRESULT parse_query( const WCHAR *str, struct view **view, struct list *mem ) diff --git a/dll/win32/wbemprox/wql.tab.h b/dll/win32/wbemprox/wql.tab.h new file mode 100644 index 0000000000..3b0a77cb8a --- /dev/null +++ b/dll/win32/wbemprox/wql.tab.h @@ -0,0 +1,104 @@ +/* A Bison parser, made by GNU Bison 3.0. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED +# define YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int wql_debug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + TK_SELECT = 258, + TK_FROM = 259, + TK_STAR = 260, + TK_COMMA = 261, + TK_DOT = 262, + TK_IS = 263, + TK_LP = 264, + TK_RP = 265, + TK_NULL = 266, + TK_FALSE = 267, + TK_TRUE = 268, + TK_INTEGER = 269, + TK_WHERE = 270, + TK_SPACE = 271, + TK_MINUS = 272, + TK_ILLEGAL = 273, + TK_BY = 274, + TK_STRING = 275, + TK_ID = 276, + TK_OR = 277, + TK_AND = 278, + TK_NOT = 279, + TK_EQ = 280, + TK_NE = 281, + TK_LT = 282, + TK_GT = 283, + TK_LE = 284, + TK_GE = 285, + TK_LIKE = 286 + }; +#endif + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 194 "wql.y" /* yacc.c:1909 */ + + struct string str; + WCHAR *string; + struct property *proplist; + struct view *view; + struct expr *expr; + int integer; + +#line 95 "wql.tab.h" /* yacc.c:1909 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + + +int wql_parse (struct parser *ctx); + +#endif /* !YY_WQL_E_REACTOSSYNC_GCC_DLL_WIN32_WBEMPROX_WQL_TAB_H_INCLUDED */ diff --git a/dll/win32/wbemprox/wql.y b/dll/win32/wbemprox/wql.y index beba2de08a..88da2b9b0f 100644 --- a/dll/win32/wbemprox/wql.y +++ b/dll/win32/wbemprox/wql.y @@ -18,8 +18,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wbemcli.h" #include "wbemprox_private.h" +#include "wine/list.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wbemprox); + struct parser { const WCHAR *cmd; diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 3e1658c9b5..b4bd2a8c39 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -195,7 +195,7 @@ reactos/dll/win32/vbscript # Synced to WineStaging-3.3 reactos/dll/win32/version # Synced to WineStaging-3.3 reactos/dll/win32/vssapi # Synced to WineStaging-2.9 reactos/dll/win32/wbemdisp # Synced to WineStaging-3.3 -reactos/dll/win32/wbemprox # Synced to Wine-3.0 +reactos/dll/win32/wbemprox # Synced to WineStaging-3.3 reactos/dll/win32/windowscodecs # Synced to WineStaging-3.3 reactos/dll/win32/windowscodecsext # Synced to WineStaging-2.9 reactos/dll/win32/winemp3.acm # Synced to Wine-3.0