windows.devices.enumeration: Add IDeviceInformationStatics2 stub.
[wine.git] / dlls / windows.devices.enumeration / main.c
blob48cc70fc517cf95a1282959ad2fd6206a2705f59
1 /* WinRT Windows.Devices.Enumeration implementation
3 * Copyright 2021 Gijs Vermeulen
4 * Copyright 2022 Julian Klemann for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include "initguid.h"
22 #include "private.h"
24 #include "wine/debug.h"
26 WINE_DEFAULT_DEBUG_CHANNEL(enumeration);
28 static const char *debugstr_hstring( HSTRING hstr )
30 const WCHAR *str;
31 UINT32 len;
32 if (hstr && !((ULONG_PTR)hstr >> 16)) return "(invalid)";
33 str = WindowsGetStringRawBuffer( hstr, &len );
34 return wine_dbgstr_wn( str, len );
37 struct device_information_statics
39 IActivationFactory IActivationFactory_iface;
40 IDeviceInformationStatics2 IDeviceInformationStatics2_iface;
41 LONG ref;
44 static inline struct device_information_statics *impl_from_IActivationFactory( IActivationFactory *iface )
46 return CONTAINING_RECORD( iface, struct device_information_statics, IActivationFactory_iface );
49 static HRESULT WINAPI activation_factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
51 struct device_information_statics *impl = impl_from_IActivationFactory( iface );
53 TRACE( "iface %p, iid %s, out %p stub!\n", iface, debugstr_guid( iid ), out );
55 if (IsEqualGUID( iid, &IID_IUnknown ) ||
56 IsEqualGUID( iid, &IID_IInspectable ) ||
57 IsEqualGUID( iid, &IID_IActivationFactory ))
59 IInspectable_AddRef( (*out = &impl->IActivationFactory_iface) );
60 return S_OK;
63 if (IsEqualGUID( iid, &IID_IDeviceInformationStatics2 ))
65 IInspectable_AddRef( (*out = &impl->IDeviceInformationStatics2_iface) );
66 return S_OK;
69 FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) );
70 *out = NULL;
71 return E_NOINTERFACE;
74 static ULONG WINAPI activation_factory_AddRef( IActivationFactory *iface )
76 struct device_information_statics *impl = impl_from_IActivationFactory( iface );
77 ULONG ref = InterlockedIncrement( &impl->ref );
78 TRACE( "iface %p, ref %lu.\n", iface, ref );
79 return ref;
82 static ULONG WINAPI activation_factory_Release( IActivationFactory *iface )
84 struct device_information_statics *impl = impl_from_IActivationFactory( iface );
85 ULONG ref = InterlockedDecrement( &impl->ref );
86 TRACE( "iface %p, ref %lu.\n", iface, ref );
87 return ref;
90 static HRESULT WINAPI activation_factory_GetIids( IActivationFactory *iface, ULONG *iid_count, IID **iids )
92 FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids );
93 return E_NOTIMPL;
96 static HRESULT WINAPI activation_factory_GetRuntimeClassName( IActivationFactory *iface, HSTRING *class_name )
98 FIXME( "iface %p, class_name %p stub!\n", iface, class_name );
99 return E_NOTIMPL;
102 static HRESULT WINAPI activation_factory_GetTrustLevel( IActivationFactory *iface, TrustLevel *trust_level )
104 FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level );
105 return E_NOTIMPL;
108 static HRESULT WINAPI activation_factory_ActivateInstance( IActivationFactory *iface, IInspectable **instance )
110 FIXME( "iface %p, instance %p stub!\n", iface, instance );
111 return E_NOTIMPL;
114 static const struct IActivationFactoryVtbl activation_factory_vtbl =
116 activation_factory_QueryInterface,
117 activation_factory_AddRef,
118 activation_factory_Release,
119 /* IInspectable methods */
120 activation_factory_GetIids,
121 activation_factory_GetRuntimeClassName,
122 activation_factory_GetTrustLevel,
123 /* IActivationFactory methods */
124 activation_factory_ActivateInstance,
127 DEFINE_IINSPECTABLE( device_statics2, IDeviceInformationStatics2, struct device_information_statics, IActivationFactory_iface );
129 static HRESULT WINAPI device_statics2_GetAqsFilterFromDeviceClass( IDeviceInformationStatics2 *iface, DeviceClass device_class,
130 HSTRING *filter )
132 FIXME( "iface %p, device_class %u, filter %p stub!\n", iface, device_class, filter );
133 return E_NOTIMPL;
136 static HRESULT WINAPI device_statics2_CreateFromIdAsync( IDeviceInformationStatics2 *iface, HSTRING device_id,
137 IIterable_HSTRING *additional_properties, DeviceInformationKind kind,
138 IAsyncOperation_DeviceInformation **async_operation )
140 FIXME( "iface %p, device_id %s, additional_properties %p, kind %u, async_operation %p stub!\n",
141 iface, debugstr_hstring( device_id ), additional_properties, kind, async_operation );
142 return E_NOTIMPL;
145 static HRESULT WINAPI device_statics2_FindAllAsync( IDeviceInformationStatics2 *iface, HSTRING filter,
146 IIterable_HSTRING *additional_properties, DeviceInformationKind kind,
147 IAsyncOperation_DeviceInformationCollection **async_operation )
149 FIXME( "iface %p, filter %s, additional_properties %p, kind %u, async_operation %p stub!\n",
150 iface, debugstr_hstring( filter ), additional_properties, kind, async_operation );
151 return E_NOTIMPL;
154 static HRESULT WINAPI device_statics2_CreateWatcher( IDeviceInformationStatics2 *iface, HSTRING filter,
155 IIterable_HSTRING *additional_properties, DeviceInformationKind kind,
156 IDeviceWatcher **watcher )
158 FIXME( "iface %p, filter %s, additional_properties %p, kind %u, watcher %p stub!\n",
159 iface, debugstr_hstring( filter ), additional_properties, kind, watcher );
160 return E_NOTIMPL;
163 static const struct IDeviceInformationStatics2Vtbl device_statics2_vtbl =
165 device_statics2_QueryInterface,
166 device_statics2_AddRef,
167 device_statics2_Release,
168 /* IInspectable methods */
169 device_statics2_GetIids,
170 device_statics2_GetRuntimeClassName,
171 device_statics2_GetTrustLevel,
172 /* IDeviceInformationStatics2 methods */
173 device_statics2_GetAqsFilterFromDeviceClass,
174 device_statics2_CreateFromIdAsync,
175 device_statics2_FindAllAsync,
176 device_statics2_CreateWatcher
179 static struct device_information_statics device_information_statics =
181 {&activation_factory_vtbl},
182 {&device_statics2_vtbl},
186 HRESULT WINAPI DllGetClassObject( REFCLSID clsid, REFIID riid, void **out )
188 FIXME( "clsid %s, riid %s, out %p stub!\n", debugstr_guid( clsid ), debugstr_guid( riid ), out );
189 return CLASS_E_CLASSNOTAVAILABLE;
192 HRESULT WINAPI DllGetActivationFactory( HSTRING classid, IActivationFactory **factory )
194 TRACE( "classid %s, factory %p.\n", debugstr_hstring( classid ), factory );
195 *factory = &device_information_statics.IActivationFactory_iface;
196 IUnknown_AddRef( *factory );
197 return S_OK;