2 * Copyright 2009 Hans Leidekker for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "wine/list.h"
20 #include "wine/unicode.h"
22 IClientSecurity client_security
;
24 #define SIZEOF(array) (sizeof(array)/sizeof((array)[0]))
26 #define COL_TYPE_MASK 0x0000ffff
27 #define COL_FLAG_DYNAMIC 0x00010000
28 #define COL_FLAG_KEY 0x00020000
40 const struct column
*columns
;
43 void (*fill
)(struct table
*);
50 const struct property
*next
;
91 struct complex_expr expr
;
92 const struct property
*propval
;
100 const struct property
*proplist
;
102 const struct expr
*cond
;
114 void addref_query( struct query
* ) DECLSPEC_HIDDEN
;
115 void release_query( struct query
*query
) DECLSPEC_HIDDEN
;
116 HRESULT
exec_query( const WCHAR
*, IEnumWbemClassObject
** ) DECLSPEC_HIDDEN
;
117 HRESULT
parse_query( const WCHAR
*, struct view
**, struct list
* ) DECLSPEC_HIDDEN
;
118 HRESULT
create_view( const struct property
*, const WCHAR
*, const struct expr
*,
119 struct view
** ) DECLSPEC_HIDDEN
;
120 void destroy_view( struct view
* ) DECLSPEC_HIDDEN
;
121 struct table
*get_table( const WCHAR
* ) DECLSPEC_HIDDEN
;
122 HRESULT
get_propval( const struct view
*, UINT
, const WCHAR
*, VARIANT
*,
123 CIMTYPE
* ) DECLSPEC_HIDDEN
;
124 HRESULT
get_properties( const struct view
*, SAFEARRAY
** ) DECLSPEC_HIDDEN
;
126 HRESULT
WbemLocator_create(IUnknown
*, LPVOID
*) DECLSPEC_HIDDEN
;
127 HRESULT
WbemServices_create(IUnknown
*, const WCHAR
*, LPVOID
*) DECLSPEC_HIDDEN
;
128 HRESULT
WbemClassObject_create(IUnknown
*, IEnumWbemClassObject
*, UINT
, LPVOID
*) DECLSPEC_HIDDEN
;
129 HRESULT
EnumWbemClassObject_create(IUnknown
*, struct query
*, LPVOID
*) DECLSPEC_HIDDEN
;
131 static void *heap_alloc( size_t len
) __WINE_ALLOC_SIZE(1);
132 static inline void *heap_alloc( size_t len
)
134 return HeapAlloc( GetProcessHeap(), 0, len
);
137 static void *heap_realloc( void *mem
, size_t len
) __WINE_ALLOC_SIZE(2);
138 static inline void *heap_realloc( void *mem
, size_t len
)
140 return HeapReAlloc( GetProcessHeap(), 0, mem
, len
);
143 static inline BOOL
heap_free( void *mem
)
145 return HeapFree( GetProcessHeap(), 0, mem
);
148 static inline WCHAR
*heap_strdupW( const WCHAR
*src
)
151 if (!src
) return NULL
;
152 if ((dst
= heap_alloc( (strlenW( src
) + 1) * sizeof(WCHAR
) ))) strcpyW( dst
, src
);