[WBEMDISP] Sync with Wine Staging 2.9. CORE-13362

a392e14 wbemdisp: Implement ISWbemProperty::get_Value.
6721725 wbemdisp: Implement ISWbemPropertySet::Item.
cb2660b wbemdisp: Implement ISWbemObject::get_Properties_.
a11aed3 wbemdisp: Invoke the generic methods and properties as well as the dynamic ones.
66edb81 wbemdisp: Search for the generic methods and properties as well as the dynamic ones.
c1242a2 wbemdisp: Add missing methods to the ISWbemObjectVtbl.
64be3a2 wbemdisp: Simplify and standardize the heap_xxx() declarations.

svn path=/trunk/; revision=74857
This commit is contained in:
Amine Khaldi 2017-06-04 01:47:30 +00:00
parent d8eaddca44
commit 50f8a9e9fa
3 changed files with 703 additions and 9 deletions

View file

@ -28,6 +28,8 @@ enum type_id
ISWbemLocator_tid,
ISWbemObject_tid,
ISWbemObjectSet_tid,
ISWbemProperty_tid,
ISWbemPropertySet_tid,
ISWbemServices_tid,
ISWbemSecurity_tid,
last_tid
@ -41,6 +43,8 @@ static REFIID wbemdisp_tid_id[] =
&IID_ISWbemLocator,
&IID_ISWbemObject,
&IID_ISWbemObjectSet,
&IID_ISWbemProperty,
&IID_ISWbemPropertySet,
&IID_ISWbemServices,
&IID_ISWbemSecurity
};
@ -80,6 +84,393 @@ static HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret )
return S_OK;
}
struct property
{
ISWbemProperty ISWbemProperty_iface;
LONG refs;
IWbemClassObject *object;
BSTR name;
};
static inline struct property *impl_from_ISWbemProperty( ISWbemProperty *iface )
{
return CONTAINING_RECORD( iface, struct property, ISWbemProperty_iface );
}
static ULONG WINAPI property_AddRef( ISWbemProperty *iface )
{
struct property *property = impl_from_ISWbemProperty( iface );
return InterlockedIncrement( &property->refs );
}
static ULONG WINAPI property_Release( ISWbemProperty *iface )
{
struct property *property = impl_from_ISWbemProperty( iface );
LONG refs = InterlockedDecrement( &property->refs );
if (!refs)
{
TRACE( "destroying %p\n", property );
IWbemClassObject_Release( property->object );
SysFreeString( property->name );
heap_free( property );
}
return refs;
}
static HRESULT WINAPI property_QueryInterface( ISWbemProperty *iface, REFIID riid, void **obj )
{
struct property *property = impl_from_ISWbemProperty( iface );
TRACE( "%p %s %p\n", property, debugstr_guid(riid), obj );
if (IsEqualGUID( riid, &IID_ISWbemProperty ) ||
IsEqualGUID( riid, &IID_IDispatch ) ||
IsEqualGUID( riid, &IID_IUnknown ))
{
*obj = iface;
}
else
{
FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
return E_NOINTERFACE;
}
ISWbemProperty_AddRef( iface );
return S_OK;
}
static HRESULT WINAPI property_GetTypeInfoCount( ISWbemProperty *iface, UINT *count )
{
struct property *property = impl_from_ISWbemProperty( iface );
TRACE( "%p, %p\n", property, count );
*count = 1;
return S_OK;
}
static HRESULT WINAPI property_GetTypeInfo( ISWbemProperty *iface, UINT index,
LCID lcid, ITypeInfo **info )
{
struct property *property = impl_from_ISWbemProperty( iface );
TRACE( "%p, %u, %u, %p\n", property, index, lcid, info );
return get_typeinfo( ISWbemProperty_tid, info );
}
static HRESULT WINAPI property_GetIDsOfNames( ISWbemProperty *iface, REFIID riid, LPOLESTR *names,
UINT count, LCID lcid, DISPID *dispid )
{
struct property *property = impl_from_ISWbemProperty( iface );
ITypeInfo *typeinfo;
HRESULT hr;
TRACE( "%p, %s, %p, %u, %u, %p\n", property, debugstr_guid(riid), names, count, lcid, dispid );
if (!names || !count || !dispid) return E_INVALIDARG;
hr = get_typeinfo( ISWbemProperty_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
ITypeInfo_Release( typeinfo );
}
return hr;
}
static HRESULT WINAPI property_Invoke( ISWbemProperty *iface, DISPID member, REFIID riid,
LCID lcid, WORD flags, DISPPARAMS *params,
VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err )
{
struct property *property = impl_from_ISWbemProperty( iface );
ITypeInfo *typeinfo;
HRESULT hr;
TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", property, member, debugstr_guid(riid),
lcid, flags, params, result, excep_info, arg_err );
hr = get_typeinfo( ISWbemProperty_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_Invoke( typeinfo, &property->ISWbemProperty_iface, member, flags,
params, result, excep_info, arg_err );
ITypeInfo_Release( typeinfo );
}
return hr;
}
static HRESULT WINAPI property_get_Value( ISWbemProperty *iface, VARIANT *value )
{
struct property *property = impl_from_ISWbemProperty( iface );
TRACE( "%p %p\n", property, value );
return IWbemClassObject_Get( property->object, property->name, 0, value, NULL, NULL );
}
static HRESULT WINAPI property_put_Value( ISWbemProperty *iface, VARIANT *varValue )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_Name( ISWbemProperty *iface, BSTR *strName )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_IsLocal( ISWbemProperty *iface, VARIANT_BOOL *bIsLocal )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_Origin( ISWbemProperty *iface, BSTR *strOrigin )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_CIMType( ISWbemProperty *iface, WbemCimtypeEnum *iCimType )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_Qualifiers_( ISWbemProperty *iface, ISWbemQualifierSet **objWbemQualifierSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI property_get_IsArray( ISWbemProperty *iface, VARIANT_BOOL *bIsArray )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static const ISWbemPropertyVtbl property_vtbl =
{
property_QueryInterface,
property_AddRef,
property_Release,
property_GetTypeInfoCount,
property_GetTypeInfo,
property_GetIDsOfNames,
property_Invoke,
property_get_Value,
property_put_Value,
property_get_Name,
property_get_IsLocal,
property_get_Origin,
property_get_CIMType,
property_get_Qualifiers_,
property_get_IsArray
};
static HRESULT SWbemProperty_create( IWbemClassObject *wbem_object, BSTR name, ISWbemProperty **obj )
{
struct property *property;
TRACE( "%p, %p\n", obj, wbem_object );
if (!(property = heap_alloc( sizeof(*property) ))) return E_OUTOFMEMORY;
property->ISWbemProperty_iface.lpVtbl = &property_vtbl;
property->refs = 1;
property->object = wbem_object;
IWbemClassObject_AddRef( property->object );
property->name = SysAllocStringLen( name, SysStringLen( name ) );
*obj = &property->ISWbemProperty_iface;
TRACE( "returning iface %p\n", *obj );
return S_OK;
}
struct propertyset
{
ISWbemPropertySet ISWbemPropertySet_iface;
LONG refs;
IWbemClassObject *object;
};
static inline struct propertyset *impl_from_ISWbemPropertySet(
ISWbemPropertySet *iface )
{
return CONTAINING_RECORD( iface, struct propertyset, ISWbemPropertySet_iface );
}
static ULONG WINAPI propertyset_AddRef( ISWbemPropertySet *iface )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
return InterlockedIncrement( &propertyset->refs );
}
static ULONG WINAPI propertyset_Release( ISWbemPropertySet *iface )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
LONG refs = InterlockedDecrement( &propertyset->refs );
if (!refs)
{
TRACE( "destroying %p\n", propertyset );
IWbemClassObject_Release( propertyset->object );
heap_free( propertyset );
}
return refs;
}
static HRESULT WINAPI propertyset_QueryInterface( ISWbemPropertySet *iface,
REFIID riid, void **obj )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
TRACE( "%p %s %p\n", propertyset, debugstr_guid(riid), obj );
if (IsEqualGUID( riid, &IID_ISWbemPropertySet ) ||
IsEqualGUID( riid, &IID_IDispatch ) ||
IsEqualGUID( riid, &IID_IUnknown ))
{
*obj = iface;
}
else
{
FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
return E_NOINTERFACE;
}
ISWbemPropertySet_AddRef( iface );
return S_OK;
}
static HRESULT WINAPI propertyset_GetTypeInfoCount( ISWbemPropertySet *iface, UINT *count )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
TRACE( "%p, %p\n", propertyset, count );
*count = 1;
return S_OK;
}
static HRESULT WINAPI propertyset_GetTypeInfo( ISWbemPropertySet *iface,
UINT index, LCID lcid, ITypeInfo **info )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
TRACE( "%p, %u, %u, %p\n", propertyset, index, lcid, info );
return get_typeinfo( ISWbemPropertySet_tid, info );
}
static HRESULT WINAPI propertyset_GetIDsOfNames( ISWbemPropertySet *iface, REFIID riid, LPOLESTR *names,
UINT count, LCID lcid, DISPID *dispid )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
ITypeInfo *typeinfo;
HRESULT hr;
TRACE( "%p, %s, %p, %u, %u, %p\n", propertyset, debugstr_guid(riid), names, count, lcid, dispid );
if (!names || !count || !dispid) return E_INVALIDARG;
hr = get_typeinfo( ISWbemPropertySet_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
ITypeInfo_Release( typeinfo );
}
return hr;
}
static HRESULT WINAPI propertyset_Invoke( ISWbemPropertySet *iface, DISPID member, REFIID riid,
LCID lcid, WORD flags, DISPPARAMS *params,
VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
ITypeInfo *typeinfo;
HRESULT hr;
TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", propertyset, member, debugstr_guid(riid),
lcid, flags, params, result, excep_info, arg_err );
hr = get_typeinfo( ISWbemPropertySet_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_Invoke( typeinfo, &propertyset->ISWbemPropertySet_iface, member, flags,
params, result, excep_info, arg_err );
ITypeInfo_Release( typeinfo );
}
return hr;
}
static HRESULT WINAPI propertyset_get__NewEnum( ISWbemPropertySet *iface, IUnknown **unk )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI propertyset_Item( ISWbemPropertySet *iface, BSTR name,
LONG flags, ISWbemProperty **prop )
{
struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface );
HRESULT hr;
VARIANT var;
TRACE( "%p, %s, %08x, %p", propertyset, debugstr_w(name), flags, prop );
hr = IWbemClassObject_Get( propertyset->object, name, 0, &var, NULL, NULL );
if (SUCCEEDED(hr))
{
hr = SWbemProperty_create( propertyset->object, name, prop );
VariantClear( &var );
}
return hr;
}
static HRESULT WINAPI propertyset_get_Count( ISWbemPropertySet *iface, LONG *count )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI propertyset_Add( ISWbemPropertySet *iface, BSTR name, WbemCimtypeEnum type,
VARIANT_BOOL is_array, LONG flags, ISWbemProperty **prop )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI propertyset_Remove( ISWbemPropertySet *iface, BSTR name, LONG flags )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static const ISWbemPropertySetVtbl propertyset_vtbl =
{
propertyset_QueryInterface,
propertyset_AddRef,
propertyset_Release,
propertyset_GetTypeInfoCount,
propertyset_GetTypeInfo,
propertyset_GetIDsOfNames,
propertyset_Invoke,
propertyset_get__NewEnum,
propertyset_Item,
propertyset_get_Count,
propertyset_Add,
propertyset_Remove
};
static HRESULT SWbemPropertySet_create( IWbemClassObject *wbem_object, ISWbemPropertySet **obj )
{
struct propertyset *propertyset;
TRACE( "%p, %p\n", obj, wbem_object );
if (!(propertyset = heap_alloc( sizeof(*propertyset) ))) return E_OUTOFMEMORY;
propertyset->ISWbemPropertySet_iface.lpVtbl = &propertyset_vtbl;
propertyset->refs = 1;
propertyset->object = wbem_object;
IWbemClassObject_AddRef( propertyset->object );
*obj = &propertyset->ISWbemPropertySet_iface;
TRACE( "returning iface %p\n", *obj );
return S_OK;
}
#define DISPID_BASE 0x1800000
struct member
@ -175,8 +566,6 @@ static HRESULT WINAPI object_GetTypeInfo(
return E_NOTIMPL;
}
#define DISPID_BASE 0x1800000
static HRESULT init_members( struct object *object )
{
LONG bound, i;
@ -241,6 +630,7 @@ static HRESULT WINAPI object_GetIDsOfNames(
struct object *object = impl_from_ISWbemObject( iface );
HRESULT hr;
UINT i;
ITypeInfo *typeinfo;
TRACE( "%p, %s, %p, %u, %u, %p\n", object, debugstr_guid(riid), names, count, lcid, dispid );
@ -249,6 +639,14 @@ static HRESULT WINAPI object_GetIDsOfNames(
hr = init_members( object );
if (FAILED( hr )) return hr;
hr = get_typeinfo( ISWbemObject_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid );
ITypeInfo_Release( typeinfo );
}
if (SUCCEEDED(hr)) return hr;
for (i = 0; i < count; i++)
{
if ((dispid[i] = get_member_dispid( object, names[i] )) == DISPID_UNKNOWN) break;
@ -280,10 +678,24 @@ static HRESULT WINAPI object_Invoke(
{
struct object *object = impl_from_ISWbemObject( iface );
BSTR name;
ITypeInfo *typeinfo;
HRESULT hr;
TRACE( "%p, %x, %s, %u, %x, %p, %p, %p, %p\n", object, member, debugstr_guid(riid),
lcid, flags, params, result, excep_info, arg_err );
if (member <= DISPID_BASE)
{
hr = get_typeinfo( ISWbemObject_tid, &typeinfo );
if (SUCCEEDED(hr))
{
hr = ITypeInfo_Invoke( typeinfo, &object->ISWbemObject_iface, member, flags,
params, result, excep_info, arg_err );
ITypeInfo_Release( typeinfo );
}
return hr;
}
if (flags != (DISPATCH_METHOD|DISPATCH_PROPERTYGET))
{
FIXME( "flags %x not supported\n", flags );
@ -306,6 +718,265 @@ static HRESULT WINAPI object_Put_(
return E_NOTIMPL;
}
static HRESULT WINAPI object_PutAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_Delete_(
ISWbemObject *iface,
LONG iFlags,
IDispatch *objWbemNamedValueSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_DeleteAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_Instances_(
ISWbemObject *iface,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
ISWbemObjectSet **objWbemObjectSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_InstancesAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_Subclasses_(
ISWbemObject *iface,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
ISWbemObjectSet **objWbemObjectSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_SubclassesAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_Associators_(
ISWbemObject *iface,
BSTR strAssocClass,
BSTR strResultClass,
BSTR strResultRole,
BSTR strRole,
VARIANT_BOOL bClassesOnly,
VARIANT_BOOL bSchemaOnly,
BSTR strRequiredAssocQualifier,
BSTR strRequiredQualifier,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
ISWbemObjectSet **objWbemObjectSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_AssociatorsAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
BSTR strAssocClass,
BSTR strResultClass,
BSTR strResultRole,
BSTR strRole,
VARIANT_BOOL bClassesOnly,
VARIANT_BOOL bSchemaOnly,
BSTR strRequiredAssocQualifier,
BSTR strRequiredQualifier,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_References_(
ISWbemObject *iface,
BSTR strResultClass,
BSTR strRole,
VARIANT_BOOL bClassesOnly,
VARIANT_BOOL bSchemaOnly,
BSTR strRequiredQualifier,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
ISWbemObjectSet **objWbemObjectSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_ReferencesAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
BSTR strResultClass,
BSTR strRole,
VARIANT_BOOL bClassesOnly,
VARIANT_BOOL bSchemaOnly,
BSTR strRequiredQualifier,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_ExecMethod_(
ISWbemObject *iface,
BSTR strMethodName,
IDispatch *objWbemInParameters,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
ISWbemObject **objWbemOutParameters )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_ExecMethodAsync_(
ISWbemObject *iface,
IDispatch *objWbemSink,
BSTR strMethodName,
IDispatch *objWbemInParameters,
LONG iFlags,
IDispatch *objWbemNamedValueSet,
IDispatch *objWbemAsyncContext )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_Clone_(
ISWbemObject *iface,
ISWbemObject **objWbemObject )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_GetObjectText_(
ISWbemObject *iface,
LONG iFlags,
BSTR *strObjectText )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_SpawnDerivedClass_(
ISWbemObject *iface,
LONG iFlags,
ISWbemObject **objWbemObject )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_SpawnInstance_(
ISWbemObject *iface,
LONG iFlags,
ISWbemObject **objWbemObject )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_CompareTo_(
ISWbemObject *iface,
IDispatch *objWbemObject,
LONG iFlags,
VARIANT_BOOL *bResult )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_get_Qualifiers_(
ISWbemObject *iface,
ISWbemQualifierSet **objWbemQualifierSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_get_Properties_( ISWbemObject *iface, ISWbemPropertySet **prop_set )
{
struct object *object = impl_from_ISWbemObject( iface );
TRACE( "%p, %p\n", object, prop_set );
return SWbemPropertySet_create( object->object, prop_set );
}
static HRESULT WINAPI object_get_Methods_(
ISWbemObject *iface,
ISWbemMethodSet **objWbemMethodSet )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_get_Derivation_(
ISWbemObject *iface,
VARIANT *strClassNameArray )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_get_Path_(
ISWbemObject *iface,
ISWbemObjectPath **objWbemObjectPath )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static HRESULT WINAPI object_get_Security_(
ISWbemObject *iface,
ISWbemSecurity **objWbemSecurity )
{
FIXME( "\n" );
return E_NOTIMPL;
}
static const ISWbemObjectVtbl object_vtbl =
{
object_QueryInterface,
@ -315,7 +986,31 @@ static const ISWbemObjectVtbl object_vtbl =
object_GetTypeInfo,
object_GetIDsOfNames,
object_Invoke,
object_Put_
object_Put_,
object_PutAsync_,
object_Delete_,
object_DeleteAsync_,
object_Instances_,
object_InstancesAsync_,
object_Subclasses_,
object_SubclassesAsync_,
object_Associators_,
object_AssociatorsAsync_,
object_References_,
object_ReferencesAsync_,
object_ExecMethod_,
object_ExecMethodAsync_,
object_Clone_,
object_GetObjectText_,
object_SpawnDerivedClass_,
object_SpawnInstance_,
object_CompareTo_,
object_get_Qualifiers_,
object_get_Properties_,
object_get_Methods_,
object_get_Derivation_,
object_get_Path_,
object_get_Security_
};
static HRESULT SWbemObject_create( IWbemClassObject *wbem_object, ISWbemObject **obj )

View file

@ -42,15 +42,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(wbemdisp);
HRESULT SWbemLocator_create(LPVOID *) DECLSPEC_HIDDEN;
static void *heap_alloc( size_t len ) __WINE_ALLOC_SIZE(1);
static inline void *heap_alloc( size_t len )
static inline void* __WINE_ALLOC_SIZE(1) heap_alloc(size_t size)
{
return HeapAlloc( GetProcessHeap(), 0, len );
return HeapAlloc(GetProcessHeap(), 0, size);
}
static inline BOOL heap_free( void *mem )
static inline BOOL heap_free(void *mem)
{
return HeapFree( GetProcessHeap(), 0, mem );
return HeapFree(GetProcessHeap(), 0, mem);
}
#endif /* _WBEMDISP_PRIVATE_H_ */

View file

@ -194,7 +194,7 @@ reactos/dll/win32/uxtheme # Forked
reactos/dll/win32/vbscript # Synced to WineStaging-2.9
reactos/dll/win32/version # Synced to WineStaging-2.9
reactos/dll/win32/vssapi # Synced to WineStaging-1.9.11
reactos/dll/win32/wbemdisp # Synced to WineStaging-2.2
reactos/dll/win32/wbemdisp # Synced to WineStaging-2.9
reactos/dll/win32/wbemprox # Synced to WineStaging-2.2
reactos/dll/win32/windowscodecs # Synced to WineStaging-1.9.23
reactos/dll/win32/windowscodecsext # Synced to WineStaging-1.9.11