ReactOS  0.4.14-dev-52-g6116262
main.c File Reference
#include <stdio.h>
#include "windows.h"
#include "ocidl.h"
#include "initguid.h"
#include "objidl.h"
#include "wbemcli.h"
#include "wmic.h"
#include "wine/debug.h"
#include "wine/unicode.h"
Include dependency graph for main.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wmic)
 
static const WCHARfind_class (const WCHAR *alias)
 
static WCHARstrdupW (const WCHAR *src)
 
static WCHARfind_prop (IWbemClassObject *class, const WCHAR *prop)
 
static int output_string (HANDLE handle, const WCHAR *msg,...)
 
static int output_error (int msg)
 
static int output_header (const WCHAR *prop, ULONG column_width)
 
static int output_line (const WCHAR *str, ULONG column_width)
 
static int query_prop (const WCHAR *class, const WCHAR *propname)
 
int wmain (int argc, WCHAR *argv[])
 

Variables

static const WCHAR biosW []
 
static const WCHAR computersystemW []
 
static const WCHAR cpuW []
 
static const WCHAR logicaldiskW []
 
static const WCHAR nicW []
 
static const WCHAR osW []
 
static const WCHAR processW []
 
static const WCHAR win32_biosW []
 
static const WCHAR win32_computersystemW []
 
static const WCHAR win32_logicaldiskW []
 
static const WCHAR win32_networkadapterW []
 
static const WCHAR win32_operatingsystemW []
 
static const WCHAR win32_processW []
 
static const WCHAR win32_processorW []
 
struct {
   const WCHAR *   alias
 
   const WCHAR *   class
 
alias_map []
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 20 of file main.c.

Function Documentation

◆ find_class()

static const WCHAR* find_class ( const WCHAR alias)
static

Definition at line 81 of file main.c.

82 {
83  unsigned int i;
84 
85  for (i = 0; i < ARRAY_SIZE(alias_map); i++)
86  {
87  if (!strcmpiW( alias, alias_map[i].alias )) return alias_map[i].class;
88  }
89  return NULL;
90 }
static const struct @5 alias_map[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
const WCHAR * alias
Definition: main.c:67
#define strcmpiW(s1, s2)
Definition: unicode.h:39
#define ARRAY_SIZE(a)
Definition: main.h:24

Referenced by wmain().

◆ find_prop()

static WCHAR* find_prop ( IWbemClassObject class,
const WCHAR prop 
)
static

Definition at line 101 of file main.c.

102 {
103  SAFEARRAY *sa;
104  WCHAR *ret = NULL;
105  LONG i, last_index = 0;
106  BSTR str;
107 
108  if (IWbemClassObject_GetNames( class, NULL, WBEM_FLAG_ALWAYS, NULL, &sa ) != S_OK) return NULL;
109 
110  SafeArrayGetUBound( sa, 1, &last_index );
111  for (i = 0; i <= last_index; i++)
112  {
113  SafeArrayGetElement( sa, &i, &str );
114  if (!strcmpiW( str, prop ))
115  {
116  ret = strdupW( str );
117  break;
118  }
119  }
120  SafeArrayDestroy( sa );
121  return ret;
122 }
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
HRESULT WINAPI SafeArrayGetElement(SAFEARRAY *psa, LONG *rgIndices, void *pvData)
Definition: safearray.c:949
OLECHAR * BSTR
Definition: compat.h:1934
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
long LONG
Definition: pedump.c:60
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1349
int ret
#define strcmpiW(s1, s2)
Definition: unicode.h:39
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
Definition: safearray.c:1035
static struct sockaddr_in sa
Definition: adnsresfilter.c:69

Referenced by query_prop().

◆ output_error()

static int output_error ( int  msg)
static

Definition at line 141 of file main.c.

142 {
143  static const WCHAR fmtW[] = {'%','s',0};
144  WCHAR buffer[8192];
145 
148 }
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
GLuint buffer
Definition: glext.h:5915
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static int output_string(HANDLE handle, const WCHAR *msg,...)
Definition: main.c:124
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define STD_ERROR_HANDLE
Definition: winbase.h:266
#define ARRAY_SIZE(a)
Definition: main.h:24
#define msg(x)
Definition: auth_time.c:54
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:847

Referenced by query_prop(), and wmain().

◆ output_header()

static int output_header ( const WCHAR prop,
ULONG  column_width 
)
static

Definition at line 150 of file main.c.

151 {
152  static const WCHAR bomW[] = {0xfeff}, fmtW[] = {'%','-','*','s','\r','\n',0};
153  int len;
154  DWORD count;
155  WCHAR buffer[8192];
156 
157  len = snprintfW( buffer, ARRAY_SIZE(buffer), fmtW, column_width, prop );
158 
159  if (!WriteConsoleW( GetStdHandle(STD_OUTPUT_HANDLE), buffer, len, &count, NULL )) /* redirected */
160  {
161  WriteFile( GetStdHandle(STD_OUTPUT_HANDLE), bomW, sizeof(bomW), &count, FALSE );
163  count += sizeof(bomW);
164  }
165 
166  return count;
167 }
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
#define snprintfW
Definition: unicode.h:60
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
Definition: readwrite.c:1449
GLuint GLuint GLsizei count
Definition: gl.h:1545
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
GLuint buffer
Definition: glext.h:5915
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define STD_OUTPUT_HANDLE
Definition: winbase.h:265
#define ARRAY_SIZE(a)
Definition: main.h:24

Referenced by query_prop(), and test_encode().

◆ output_line()

static int output_line ( const WCHAR str,
ULONG  column_width 
)
static

Definition at line 169 of file main.c.

170 {
171  static const WCHAR fmtW[] = {'%','-','*','s','\r','\n',0};
172  return output_string( GetStdHandle(STD_OUTPUT_HANDLE), fmtW, column_width, str );
173 }
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
static int output_string(HANDLE handle, const WCHAR *msg,...)
Definition: main.c:124
const WCHAR * str
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define STD_OUTPUT_HANDLE
Definition: winbase.h:265

Referenced by query_prop().

◆ output_string()

static int output_string ( HANDLE  handle,
const WCHAR msg,
  ... 
)
static

Definition at line 124 of file main.c.

125 {
126  va_list va_args;
127  int len;
128  DWORD count;
129  WCHAR buffer[8192];
130 
131  va_start( va_args, msg );
132  len = vsnprintfW( buffer, ARRAY_SIZE(buffer), msg, va_args );
133  va_end( va_args );
134 
135  if (!WriteConsoleW( handle, buffer, len, &count, NULL ))
136  WriteFile( handle, buffer, len * sizeof(WCHAR), &count, FALSE );
137 
138  return count;
139 }
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
BOOL WINAPI DECLSPEC_HOTPATCH WriteConsoleW(IN HANDLE hConsoleOutput, IN CONST VOID *lpBuffer, IN DWORD nNumberOfCharsToWrite, OUT LPDWORD lpNumberOfCharsWritten, LPVOID lpReserved)
Definition: readwrite.c:1449
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint buffer
Definition: glext.h:5915
#define va_end(ap)
Definition: acmsvcex.h:90
smooth NULL
Definition: ftsmooth.c:416
char * va_list
Definition: acmsvcex.h:78
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define ARRAY_SIZE(a)
Definition: main.h:24
#define vsnprintfW
Definition: unicode.h:61
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define msg(x)
Definition: auth_time.c:54

Referenced by output_error(), and output_line().

◆ query_prop()

static int query_prop ( const WCHAR class,
const WCHAR propname 
)
static

Definition at line 175 of file main.c.

176 {
177  static const WCHAR select_allW[] = {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',0};
178  static const WCHAR cimv2W[] = {'R','O','O','T','\\','C','I','M','V','2',0};
179  static const WCHAR wqlW[] = {'W','Q','L',0};
180  HRESULT hr;
185  BSTR path = NULL, wql = NULL, query = NULL;
186  WCHAR *prop = NULL;
187  BOOL first = TRUE;
188  int len, ret = -1;
190  ULONG count, width = 0;
191  VARIANT v;
192 
193  WINE_TRACE("%s, %s\n", debugstr_w(class), debugstr_w(propname));
194 
195  CoInitialize( NULL );
197  RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL );
198 
199  hr = CoCreateInstance( &CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemLocator,
200  (void **)&locator );
201  if (hr != S_OK) goto done;
202 
203  if (!(path = SysAllocString( cimv2W ))) goto done;
204  hr = IWbemLocator_ConnectServer( locator, path, NULL, NULL, NULL, 0, NULL, NULL, &services );
205  if (hr != S_OK) goto done;
206 
207  len = strlenW( class ) + ARRAY_SIZE(select_allW);
208  if (!(query = SysAllocStringLen( NULL, len ))) goto done;
209  strcpyW( query, select_allW );
210  strcatW( query, class );
211 
212  if (!(wql = SysAllocString( wqlW ))) goto done;
213  hr = IWbemServices_ExecQuery( services, wql, query, flags, NULL, &result );
214  if (hr != S_OK) goto done;
215 
216  for (;;) /* get column width */
217  {
218  IEnumWbemClassObject_Next( result, WBEM_INFINITE, 1, &obj, &count );
219  if (!count) break;
220 
221  if (!prop && !(prop = find_prop( obj, propname )))
222  {
224  goto done;
225  }
226  if (IWbemClassObject_Get( obj, prop, 0, &v, NULL, NULL ) == WBEM_S_NO_ERROR)
227  {
228  VariantChangeType( &v, &v, 0, VT_BSTR );
229  width = max( strlenW( V_BSTR( &v ) ), width );
230  VariantClear( &v );
231  }
232  IWbemClassObject_Release( obj );
233  }
234  width += 2;
235 
236  IEnumWbemClassObject_Reset( result );
237  for (;;)
238  {
239  IEnumWbemClassObject_Next( result, WBEM_INFINITE, 1, &obj, &count );
240  if (!count) break;
241 
242  if (first)
243  {
244  output_header( prop, width );
245  first = FALSE;
246  }
247  if (IWbemClassObject_Get( obj, prop, 0, &v, NULL, NULL ) == WBEM_S_NO_ERROR)
248  {
249  VariantChangeType( &v, &v, 0, VT_BSTR );
250  output_line( V_BSTR( &v ), width );
251  VariantClear( &v );
252  }
253  IWbemClassObject_Release( obj );
254  }
255  ret = 0;
256 
257 done:
258  if (result) IEnumWbemClassObject_Release( result );
259  if (services) IWbemServices_Release( services );
260  if (locator) IWbemLocator_Release( locator );
261  SysFreeString( path );
262  SysFreeString( query );
263  SysFreeString( wql );
264  HeapFree( GetProcessHeap(), 0, prop );
265  CoUninitialize();
266  return ret;
267 }
GLint GLint GLsizei width
Definition: gl.h:1546
#define max(a, b)
Definition: svc.c:63
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
Definition: variant.c:965
#define TRUE
Definition: types.h:120
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
Definition: unicode.h:212
HRESULT hr
Definition: shlfolder.c:183
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:342
static WCHAR * find_prop(IWbemClassObject *class, const WCHAR *prop)
Definition: main.c:101
GLuint GLuint GLsizei count
Definition: gl.h:1545
const GLint * first
Definition: glext.h:5794
#define RPC_C_AUTHN_LEVEL_DEFAULT
Definition: rpcdce.h:145
#define WINE_TRACE
Definition: debug.h:353
OLECHAR * BSTR
Definition: compat.h:1934
#define RPC_C_IMP_LEVEL_IMPERSONATE
Definition: rpcdce.h:176
HRESULT WINAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE *asAuthSvc, void *pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void *pReserved2, DWORD dwCapabilities, void *pReserved3)
Definition: compobj.c:4031
GLsizei GLsizei GLuint * obj
Definition: glext.h:6042
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
#define debugstr_w
Definition: kernel32.h:32
static const WCHAR wqlW[]
Definition: query.c:30
smooth NULL
Definition: ftsmooth.c:416
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
#define GetProcessHeap()
Definition: compat.h:395
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
GLbitfield flags
Definition: glext.h:7161
#define STRING_INVALID_QUERY
Definition: wmic.h:23
int ret
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:651
GLenum GLsizei len
Definition: glext.h:6722
#define V_BSTR(A)
Definition: oleauto.h:226
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3234
#define S_OK
Definition: intsafe.h:59
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
Definition: unicode.h:219
const GLdouble * v
Definition: gl.h:2040
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:1991
#define ARRAY_SIZE(a)
Definition: main.h:24
Definition: services.c:325
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
Definition: unicode.h:242
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
static int output_error(int msg)
Definition: main.c:141
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1897
unsigned int ULONG
Definition: retypes.h:1
static int output_line(const WCHAR *str, ULONG column_width)
Definition: main.c:169
GLuint64EXT * result
Definition: glext.h:11304
#define HeapFree(x, y, z)
Definition: compat.h:394
static int output_header(const WCHAR *prop, ULONG column_width)
Definition: main.c:150

Referenced by wmain().

◆ strdupW()

static WCHAR* strdupW ( const WCHAR src)
inlinestatic

Definition at line 92 of file main.c.

93 {
94  WCHAR *dst;
95  if (!src) return NULL;
96  if (!(dst = HeapAlloc( GetProcessHeap(), 0, (strlenW( src ) + 1) * sizeof(WCHAR) ))) return NULL;
97  strcpyW( dst, src );
98  return dst;
99 }
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
Definition: unicode.h:212
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLenum src
Definition: glext.h:6340
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
Definition: unicode.h:219
GLenum GLenum dst
Definition: glext.h:6340

Referenced by ACTION_AppSearchComponents(), ACTION_CheckDirectory(), ACTION_ResolveSource(), add_cookie(), add_domain(), add_wildcard(), app_search_file(), BackgroundCopyFileConstructor(), BackgroundCopyJob_SetCredentials(), BackgroundCopyJobConstructor(), build_path(), build_source_filename(), cabinet_copy_file(), copy_install_file(), create_temp_binary(), create_temp_dir(), deformat_component(), deformat_file(), deformat_string_internal(), delete_key(), dialog_create(), dialog_create_window(), do_msidbCustomActionTypeDll(), do_msidbCustomActionTypeScript(), downloadcb_OnProgress(), event_new_dialog(), event_subscribe(), file_running_action(), find_prop(), get_duplicate_filename(), get_ini_field(), get_ini_file_name(), get_product_code(), handle_redirect(), HtmlHelpW(), http_options_SetCustomHeaders(), IAssemblyName_SetPath(), insert_header(), installfiles_cb(), ITERATE_InstallODBCDriver(), ITERATE_InstallODBCTranslator(), ITERATE_MoveFiles(), ITERATE_RegisterFonts(), ITERATE_RegisterTypeLibraries(), ITERATE_RemoveFiles(), ITERATE_UnregisterFonts(), ITERATE_WriteEnvironmentString(), ldap_encode_sort_controlW(), load_class(), load_file(), load_folder(), load_mime(), load_ttf_name_id(), LoadWinTypeFromCHM(), MergeChmString(), msi_apply_patch_package(), msi_apply_registered_patch(), msi_combobox_add_item(), msi_create_temp_file(), MSI_CreatePackage(), msi_dialog_checkbox_control(), msi_dialog_create_radiobutton(), msi_dialog_dup_property(), msi_dialog_edit_control(), msi_dialog_get_uitext(), msi_dialog_line_control(), msi_dialog_maskedit_control(), msi_dialog_oncreate(), msi_dialog_radiogroup_control(), msi_get_binary_name(), msi_get_deferred_action(), msi_get_merge_table(), msi_get_query_columns(), msi_get_query_types(), msi_get_table_labels(), MSI_GetProductInfo(), MSI_InstallPackage(), msi_listbox_add_item(), msi_load_media_info(), msi_maskedit_set_text(), msi_media_get_disk_info(), MSI_OpenDatabaseW(), MSI_OpenPackageW(), msi_package_add_info(), msi_package_add_media_disk(), MSI_ProcessMessage(), msi_register_unique_action(), msi_resolve_source_folder(), msi_schedule_action(), msi_table_apply_transform(), MsiEnableLogW(), MsiGetPatchInfoExW(), MsiGetProductInfoExW(), MsiSourceListAddSourceExW(), name_GetVersion(), open_connection(), open_key(), OpenCHM(), parse_culture(), parse_display_name(), parse_languages(), patchfiles_cb(), path_SetClassName(), path_SetNamespaceAt(), path_SetServer(), pending_event_end_dialog(), pending_event_new_dialog(), pending_event_spawn_dialog(), ready_media(), reg_get_value(), resolve_filename(), resolve_keypath(), set_cookies(), set_credentials(), set_server_for_hostname(), SetChmPath(), split_multi_string_values(), STORAGES_set_row(), strstriW(), Typelib_EnumResNameProc(), winhttp_request_Open(), winhttp_request_SetProxy(), WinHttpConnect(), WinHttpOpen(), WinHttpOpenRequest(), and WinHttpSendRequest().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wmic  )

◆ wmain()

int wmain ( int  argc,
WCHAR argv[] 
)

Definition at line 269 of file main.c.

270 {
271  static const WCHAR getW[] = {'g','e','t',0};
272  static const WCHAR quitW[] = {'q','u','i','t',0};
273  static const WCHAR exitW[] = {'e','x','i','t',0};
274  static const WCHAR pathW[] = {'p','a','t','h',0};
275  static const WCHAR classW[] = {'c','l','a','s','s',0};
276  static const WCHAR contextW[] = {'c','o','n','t','e','x','t',0};
277  const WCHAR *class, *value;
278  int i;
279 
280  for (i = 1; i < argc && argv[i][0] == '/'; i++)
281  WINE_FIXME( "command line switch %s not supported\n", debugstr_w(argv[i]) );
282 
283  if (i >= argc)
284  goto not_supported;
285 
286  if (!strcmpiW( argv[i], quitW ) ||
287  !strcmpiW( argv[i], exitW ))
288  {
289  return 0;
290  }
291 
292  if (!strcmpiW( argv[i], classW) ||
293  !strcmpiW( argv[i], contextW ))
294  {
295  WINE_FIXME( "command %s not supported\n", debugstr_w(argv[i]) );
296  goto not_supported;
297  }
298 
299  if (!strcmpiW( argv[i], pathW ))
300  {
301  if (++i >= argc)
302  {
304  return 1;
305  }
306  class = argv[i];
307  }
308  else
309  {
310  class = find_class( argv[i] );
311  if (!class)
312  {
314  return 1;
315  }
316  }
317 
318  if (++i >= argc)
319  goto not_supported;
320 
321  if (!strcmpiW( argv[i], getW ))
322  {
323  if (++i >= argc)
324  goto not_supported;
325  value = argv[i];
326  return query_prop( class, value );
327  }
328 
329 not_supported:
331  return 1;
332 }
static const WCHAR classW[]
Definition: lex.c:38
static int argc
Definition: ServiceArgs.c:12
static const WCHAR * find_class(const WCHAR *alias)
Definition: main.c:81
#define argv
Definition: mplay32.c:18
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define debugstr_w
Definition: kernel32.h:32
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const WCHAR exitW[]
Definition: lex.c:50
#define STRING_CMDLINE_NOT_SUPPORTED
Definition: wmic.h:21
static int query_prop(const WCHAR *class, const WCHAR *propname)
Definition: main.c:175
GLsizei const GLfloat * value
Definition: glext.h:6069
#define strcmpiW(s1, s2)
Definition: unicode.h:39
#define STRING_INVALID_PATH
Definition: wmic.h:24
static int output_error(int msg)
Definition: main.c:141
static const WCHAR getW[]
Definition: lex.c:55
#define STRING_ALIAS_NOT_FOUND
Definition: wmic.h:22
#define WINE_FIXME
Definition: debug.h:365

Variable Documentation

◆ alias

◆ alias_map

const { ... } alias_map[]
Initial value:
=
{
}
static const WCHAR cpuW[]
Definition: main.c:39
static const WCHAR win32_logicaldiskW[]
Definition: main.c:54
static const WCHAR win32_computersystemW[]
Definition: main.c:52
static const WCHAR osW[]
Definition: main.c:45
static const WCHAR biosW[]
Definition: main.c:35
static const WCHAR win32_operatingsystemW[]
Definition: main.c:58
static const WCHAR processW[]
Definition: main.c:47
static const WCHAR win32_biosW[]
Definition: main.c:50
static const WCHAR computersystemW[]
Definition: main.c:37
static const WCHAR logicaldiskW[]
Definition: main.c:41
static const WCHAR nicW[]
Definition: main.c:43
static const WCHAR win32_networkadapterW[]
Definition: main.c:56
static const WCHAR win32_processorW[]
Definition: main.c:62
static const WCHAR win32_processW[]
Definition: main.c:60

Referenced by find_class().

◆ biosW

const WCHAR biosW[]
static
Initial value:
=
{'b','i','o','s',0}

Definition at line 35 of file main.c.

Referenced by test_ParseDisplayName().

◆ class

◆ computersystemW

const WCHAR computersystemW[]
static
Initial value:
=
{'c','o','m','p','u','t','e','r','s','y','s','t','e','m',0}

Definition at line 37 of file main.c.

◆ cpuW

const WCHAR cpuW[]
static
Initial value:
=
{'c','p','u',0}

Definition at line 39 of file main.c.

◆ logicaldiskW

const WCHAR logicaldiskW[]
static
Initial value:
=
{'L','o','g','i','c','a','l','D','i','s','k',0}

Definition at line 41 of file main.c.

◆ nicW

const WCHAR nicW[]
static
Initial value:
=
{'n','i','c',0}

Definition at line 43 of file main.c.

◆ osW

const WCHAR osW[]
static
Initial value:
=
{'o','s',0}

Definition at line 45 of file main.c.

◆ processW

const WCHAR processW[]
static
Initial value:
=
{'p','r','o','c','e','s','s',0}

Definition at line 47 of file main.c.

Referenced by test_Win32_Process().

◆ win32_biosW

const WCHAR win32_biosW[]
static
Initial value:
=
{'W','i','n','3','2','_','B','I','O','S',0}

Definition at line 50 of file main.c.

◆ win32_computersystemW

const WCHAR win32_computersystemW[]
static
Initial value:
=
{'W','i','n','3','2','_','C','o','m','p','u','t','e','r','S','y','s','t','e','m',0}

Definition at line 52 of file main.c.

◆ win32_logicaldiskW

const WCHAR win32_logicaldiskW[]
static
Initial value:
=
{'W','i','n','3','2','_','L','o','g','i','c','a','l','D','i','s','k',0}

Definition at line 54 of file main.c.

◆ win32_networkadapterW

const WCHAR win32_networkadapterW[]
static
Initial value:
=
{'W','i','n','3','2','_','N','e','t','w','o','r','k','A','d','a','p','t','e','r',0}

Definition at line 56 of file main.c.

◆ win32_operatingsystemW

const WCHAR win32_operatingsystemW[]
static
Initial value:
=
{'W','i','n','3','2','_','O','p','e','r','a','t','i','n','g','S','y','s','t','e','m',0}

Definition at line 58 of file main.c.

◆ win32_processorW

const WCHAR win32_processorW[]
static
Initial value:
=
{'W','i','n','3','2','_','P','r','o','c','e','s','s','o','r',0}

Definition at line 62 of file main.c.

◆ win32_processW

const WCHAR win32_processW[]
static
Initial value:
=
{'W','i','n','3','2','_','P','r','o','c','e','s','s',0}

Definition at line 60 of file main.c.