ReactOS 0.4.16-dev-2320-ge1853c6
roapi.c File Reference
#include "objbase.h"
#include "initguid.h"
#include "roapi.h"
#include "roparameterizediid.h"
#include "roerrorapi.h"
#include "winstring.h"
#include "combase_private.h"
#include "wine/debug.h"
Include dependency graph for roapi.c:

Go to the source code of this file.

Classes

struct  activatable_class_data
 
struct  agile_reference
 

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (combase)
 
static HRESULT get_library_for_classid (const WCHAR *classid, WCHAR **out)
 
HRESULT WINAPI RoInitialize (RO_INIT_TYPE type)
 
void WINAPI RoUninitialize (void)
 
HRESULT WINAPI DECLSPEC_HOTPATCH RoGetActivationFactory (HSTRING classid, REFIID iid, void **class_factory)
 
HRESULT WINAPI RoGetParameterizedTypeInstanceIID (UINT32 name_element_count, const WCHAR **name_elements, const IRoMetaDataLocator *meta_data_locator, GUID *iid, ROPARAMIIDHANDLE *hiid)
 
HRESULT WINAPI RoActivateInstance (HSTRING classid, IInspectable **instance)
 
static HRESULT marshal_object_in_agile_reference (struct agile_reference *ref, REFIID riid, IUnknown *obj)
 
static struct agile_referenceimpl_from_IAgileReference (IAgileReference *iface)
 
static HRESULT WINAPI agile_ref_QueryInterface (IAgileReference *iface, REFIID riid, void **obj)
 
static ULONG WINAPI agile_ref_AddRef (IAgileReference *iface)
 
static ULONG WINAPI agile_ref_Release (IAgileReference *iface)
 
static HRESULT WINAPI agile_ref_Resolve (IAgileReference *iface, REFIID riid, void **obj)
 
HRESULT WINAPI RoGetAgileReference (enum AgileReferenceOptions option, REFIID riid, IUnknown *obj, IAgileReference **agile_reference)
 
HRESULT WINAPI RoGetApartmentIdentifier (UINT64 *identifier)
 
HRESULT WINAPI RoRegisterForApartmentShutdown (IApartmentShutdown *callback, UINT64 *identifier, APARTMENT_SHUTDOWN_REGISTRATION_COOKIE *cookie)
 
HRESULT WINAPI RoGetServerActivatableClasses (HSTRING name, HSTRING **classes, DWORD *count)
 
HRESULT WINAPI RoRegisterActivationFactories (HSTRING *classes, PFNGETACTIVATIONFACTORY *callbacks, UINT32 count, RO_REGISTRATION_COOKIE *cookie)
 
HRESULT WINAPI GetRestrictedErrorInfo (IRestrictedErrorInfo **info)
 
HRESULT WINAPI SetRestrictedErrorInfo (IRestrictedErrorInfo *info)
 
BOOL WINAPI RoOriginateLanguageException (HRESULT error, HSTRING message, IUnknown *language_exception)
 
BOOL WINAPI RoOriginateError (HRESULT error, HSTRING message)
 
BOOL WINAPI RoOriginateErrorW (HRESULT error, UINT max_len, const WCHAR *message)
 
HRESULT WINAPI RoSetErrorReportingFlags (UINT32 flags)
 
void WINAPI CleanupTlsOleState (void *unknown)
 
HRESULT WINAPI DllGetActivationFactory (HSTRING classid, IActivationFactory **factory)
 

Variables

static const IAgileReferenceVtbl agile_ref_vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 19 of file roapi.c.

Function Documentation

◆ agile_ref_AddRef()

static ULONG WINAPI agile_ref_AddRef ( IAgileReference iface)
static

Definition at line 288 of file roapi.c.

289{
290 struct agile_reference *impl = impl_from_IAgileReference(iface);
291 return InterlockedIncrement(&impl->ref);
292}
#define InterlockedIncrement
Definition: armddk.h:53
static struct agile_reference * impl_from_IAgileReference(IAgileReference *iface)
Definition: roapi.c:263

◆ agile_ref_QueryInterface()

static HRESULT WINAPI agile_ref_QueryInterface ( IAgileReference iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 268 of file roapi.c.

269{
270 TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), obj);
271
272 if (!riid || !obj) return E_INVALIDARG;
273
275 || IsEqualGUID(riid, &IID_IAgileObject)
276 || IsEqualGUID(riid, &IID_IAgileReference))
277 {
278 IUnknown_AddRef(iface);
279 *obj = iface;
280 return S_OK;
281 }
282
283 *obj = NULL;
284 FIXME("interface %s is not implemented\n", debugstr_guid(riid));
285 return E_NOINTERFACE;
286}
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
#define E_INVALIDARG
Definition: ddrawi.h:101
#define NULL
Definition: types.h:112
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ agile_ref_Release()

static ULONG WINAPI agile_ref_Release ( IAgileReference iface)
static

Definition at line 294 of file roapi.c.

295{
296 struct agile_reference *impl = impl_from_IAgileReference(iface);
298
299 if (!ref)
300 {
301 TRACE("destroying %p\n", iface);
302
303 if (impl->obj)
304 IUnknown_Release(impl->obj);
305
306 if (impl->marshal_stream)
307 {
308 LARGE_INTEGER zero = {0};
309
310 IStream_Seek(impl->marshal_stream, zero, STREAM_SEEK_SET, NULL);
312 IStream_Release(impl->marshal_stream);
313 }
315 free(impl);
316 }
317
318 return ref;
319}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5
HRESULT WINAPI CoReleaseMarshalData(IStream *stream)
Definition: marshal.c:673
long LONG
Definition: pedump.c:60
int zero
Definition: sehframes.cpp:29
IUnknown * obj
Definition: roapi.c:242
CRITICAL_SECTION cs
Definition: roapi.c:241
IStream * marshal_stream
Definition: roapi.c:240
Definition: send.c:48
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

◆ agile_ref_Resolve()

static HRESULT WINAPI agile_ref_Resolve ( IAgileReference iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 321 of file roapi.c.

322{
323 struct agile_reference *impl = impl_from_IAgileReference(iface);
324 LARGE_INTEGER zero = {0};
325 HRESULT hr;
326
327 TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), obj);
328
329 EnterCriticalSection(&impl->cs);
331 {
333 {
334 LeaveCriticalSection(&impl->cs);
335 return hr;
336 }
337
338 IUnknown_Release(impl->obj);
339 impl->obj = NULL;
340 }
341
342 if (SUCCEEDED(hr = IStream_Seek(impl->marshal_stream, zero, STREAM_SEEK_SET, NULL)))
344
345 LeaveCriticalSection(&impl->cs);
346 return hr;
347}
@ AGILEREFERENCE_DELAYEDMARSHAL
Definition: combaseapi.h:50
HRESULT WINAPI CoUnmarshalInterface(IStream *stream, REFIID riid, void **ppv)
Definition: marshal.c:793
static HRESULT marshal_object_in_agile_reference(struct agile_reference *ref, REFIID riid, IUnknown *obj)
Definition: roapi.c:246
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hr
Definition: shlfolder.c:183
enum AgileReferenceOptions option
Definition: roapi.c:239
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ CleanupTlsOleState()

void WINAPI CleanupTlsOleState ( void unknown)

Definition at line 531 of file roapi.c.

532{
533 FIXME("(%p): stub\n", unknown);
534}
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1605

◆ DllGetActivationFactory()

HRESULT WINAPI DllGetActivationFactory ( HSTRING  classid,
IActivationFactory **  factory 
)

Definition at line 539 of file roapi.c.

540{
541 FIXME("(%s, %p): stub\n", debugstr_hstring(classid), factory);
542
543 return REGDB_E_CLASSNOTREG;
544}
Definition: main.c:439
#define REGDB_E_CLASSNOTREG
Definition: winerror.h:3801

◆ get_library_for_classid()

static HRESULT get_library_for_classid ( const WCHAR classid,
WCHAR **  out 
)
static

Definition at line 42 of file roapi.c.

43{
44 ACTCTX_SECTION_KEYED_DATA data;
45 HKEY hkey_root, hkey_class;
47 HRESULT hr;
48 WCHAR *buf = NULL;
49
50 *out = NULL;
51
52 /* search activation context first */
53 data.cbSize = sizeof(data);
54 if (FindActCtxSectionStringW(FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, NULL,
55 ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES, classid, &data))
56 {
57 struct activatable_class_data *activatable_class = (struct activatable_class_data *)data.lpData;
58 void *ptr = (BYTE *)data.lpSectionBase + activatable_class->module_offset;
59 *out = wcsdup(ptr);
60 return S_OK;
61 }
62
63 /* load class registry key */
64 if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\WindowsRuntime\\ActivatableClassId",
65 0, KEY_READ, &hkey_root))
66 return REGDB_E_READREGDB;
67 if (RegOpenKeyExW(hkey_root, classid, 0, KEY_READ, &hkey_class))
68 {
69 WARN("Class %s not found in registry\n", debugstr_w(classid));
70 RegCloseKey(hkey_root);
72 }
73 RegCloseKey(hkey_root);
74
75 /* load (and expand) DllPath registry value */
76 if (RegQueryValueExW(hkey_class, L"DllPath", NULL, &type, NULL, &size))
77 {
79 goto done;
80 }
81 if (type != REG_SZ && type != REG_EXPAND_SZ)
82 {
84 goto done;
85 }
86 if (!(buf = malloc(size)))
87 {
89 goto done;
90 }
91 if (RegQueryValueExW(hkey_class, L"DllPath", NULL, NULL, (BYTE *)buf, &size))
92 {
94 goto done;
95 }
96 if (type == REG_EXPAND_SZ)
97 {
98 WCHAR *expanded;
100 if (!(expanded = malloc(len * sizeof(WCHAR))))
101 {
103 goto done;
104 }
106 free(buf);
107 buf = expanded;
108 }
109
110 *out = buf;
111 return S_OK;
112
113done:
114 free(buf);
115 RegCloseKey(hkey_class);
116 return hr;
117}
#define WARN(fmt,...)
Definition: precomp.h:61
#define RegCloseKey(hKey)
Definition: registry.h:49
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define malloc
Definition: debug_ros.c:4
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:520
BOOL WINAPI FindActCtxSectionStringW(DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, LPCWSTR lpSearchStr, PACTCTX_SECTION_KEYED_DATA pInfo)
Definition: actctx.c:238
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
#define L(x)
Definition: resources.c:13
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
#define debugstr_w
Definition: kernel32.h:32
#define REG_SZ
Definition: layer.c:22
static PVOID ptr
Definition: dispmode.c:27
#define KEY_READ
Definition: nt_native.h:1026
#define REG_EXPAND_SZ
Definition: nt_native.h:1497
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define REGDB_E_READREGDB
Definition: winerror.h:3797
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193

Referenced by RoGetActivationFactory().

◆ GetRestrictedErrorInfo()

HRESULT WINAPI GetRestrictedErrorInfo ( IRestrictedErrorInfo **  info)

Definition at line 477 of file roapi.c.

478{
479 FIXME( "(%p)\n", info );
480 return E_NOTIMPL;
481}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ impl_from_IAgileReference()

static struct agile_reference * impl_from_IAgileReference ( IAgileReference iface)
inlinestatic

Definition at line 263 of file roapi.c.

264{
265 return CONTAINING_RECORD(iface, struct agile_reference, IAgileReference_iface);
266}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by agile_ref_AddRef(), agile_ref_Release(), and agile_ref_Resolve().

◆ marshal_object_in_agile_reference()

static HRESULT marshal_object_in_agile_reference ( struct agile_reference ref,
REFIID  riid,
IUnknown obj 
)
static

Definition at line 246 of file roapi.c.

247{
248 HRESULT hr;
249
250 hr = CreateStreamOnHGlobal(0, TRUE, &ref->marshal_stream);
251 if (FAILED(hr))
252 return hr;
253
254 hr = CoMarshalInterface(ref->marshal_stream, riid, obj, MSHCTX_INPROC, NULL, MSHLFLAGS_TABLESTRONG);
255 if (FAILED(hr))
256 {
257 IStream_Release(ref->marshal_stream);
258 ref->marshal_stream = NULL;
259 }
260 return hr;
261}
#define TRUE
Definition: types.h:120
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
HRESULT WINAPI CoMarshalInterface(IStream *stream, REFIID riid, IUnknown *unk, DWORD dest_context, void *pvDestContext, DWORD mshlFlags)
Definition: marshal.c:483

Referenced by agile_ref_Resolve(), and RoGetAgileReference().

◆ RoActivateInstance()

HRESULT WINAPI RoActivateInstance ( HSTRING  classid,
IInspectable **  instance 
)

Definition at line 219 of file roapi.c.

220{
222 HRESULT hr;
223
224 FIXME("(%p, %p): semi-stub\n", classid, instance);
225
226 hr = RoGetActivationFactory(classid, &IID_IActivationFactory, (void **)&factory);
227 if (SUCCEEDED(hr))
228 {
229 hr = IActivationFactory_ActivateInstance(factory, instance);
230 IActivationFactory_Release(factory);
231 }
232
233 return hr;
234}
static HINSTANCE instance
Definition: main.c:40
HRESULT WINAPI DECLSPEC_HOTPATCH RoGetActivationFactory(HSTRING classid, REFIID iid, void **class_factory)
Definition: roapi.c:146

Referenced by test_ActivationFactories().

◆ RoGetActivationFactory()

HRESULT WINAPI DECLSPEC_HOTPATCH RoGetActivationFactory ( HSTRING  classid,
REFIID  iid,
void **  class_factory 
)

Definition at line 146 of file roapi.c.

147{
148 PFNGETACTIVATIONFACTORY pDllGetActivationFactory;
150 WCHAR *library;
152 HRESULT hr;
153
154 FIXME("(%s, %s, %p): semi-stub\n", debugstr_hstring(classid), debugstr_guid(iid), class_factory);
155
156 if (!iid || !class_factory)
157 return E_INVALIDARG;
158
159 if (FAILED(hr = ensure_mta()))
160 return hr;
161
163 if (FAILED(hr))
164 {
165 ERR("Failed to find library for %s\n", debugstr_hstring(classid));
166 return hr;
167 }
168
169 if (!(module = LoadLibraryW(library)))
170 {
171 ERR("Failed to load module %s\n", debugstr_w(library));
173 goto done;
174 }
175
176 if (!(pDllGetActivationFactory = (void *)GetProcAddress(module, "DllGetActivationFactory")))
177 {
178 ERR("Module %s does not implement DllGetActivationFactory\n", debugstr_w(library));
179 hr = E_FAIL;
180 goto done;
181 }
182
183 TRACE("Found library %s for class %s\n", debugstr_w(library), debugstr_hstring(classid));
184
185 hr = pDllGetActivationFactory(classid, &factory);
186 if (SUCCEEDED(hr))
187 {
188 hr = IActivationFactory_QueryInterface(factory, iid, class_factory);
189 if (SUCCEEDED(hr))
190 {
191 TRACE("Created interface %p\n", *class_factory);
192 module = NULL;
193 }
194 IActivationFactory_Release(factory);
195 }
196
197done:
198 free(library);
200 return hr;
201}
HRESULT ensure_mta(void)
Definition: apartment.c:1297
#define ERR(fmt,...)
Definition: precomp.h:57
FT_Library library
Definition: cffdrivr.c:660
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT get_library_for_classid(const WCHAR *classid, WCHAR **out)
Definition: roapi.c:42
LPCWSTR WINAPI WindowsGetStringRawBuffer(HSTRING str, UINT32 *len)
Definition: string.c:263
#define GetProcAddress(x, y)
Definition: compat.h:753
#define FreeLibrary(x)
Definition: compat.h:748
#define LoadLibraryW(x)
Definition: compat.h:747
HRESULT(WINAPI * PFNGETACTIVATIONFACTORY)(_In_ HSTRING classId, _Out_ IActivationFactory **factory)
Definition: roapi.h:69
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210

Referenced by mta_init_implicit_thread(), RoActivateInstance(), test_ActivationFactories(), and test_implicit_mta().

◆ RoGetAgileReference()

HRESULT WINAPI RoGetAgileReference ( enum AgileReferenceOptions  option,
REFIID  riid,
IUnknown obj,
IAgileReference **  agile_reference 
)

Definition at line 360 of file roapi.c.

362{
363 struct agile_reference *impl;
365 HRESULT hr;
366
367 TRACE("(%d, %s, %p, %p).\n", option, debugstr_guid(riid), obj, agile_reference);
368
370 return E_INVALIDARG;
371
373 {
374 ERR("Apartment not initialized\n");
375 return CO_E_NOTINITIALIZED;
376 }
377
378 hr = IUnknown_QueryInterface(obj, riid, (void **)&unknown);
379 if (FAILED(hr))
380 return E_NOINTERFACE;
381 IUnknown_Release(unknown);
382
383 hr = IUnknown_QueryInterface(obj, &IID_INoMarshal, (void **)&unknown);
384 if (SUCCEEDED(hr))
385 {
386 IUnknown_Release(unknown);
387 return CO_E_NOT_SUPPORTED;
388 }
389
390 impl = calloc(1, sizeof(*impl));
391 if (!impl)
392 return E_OUTOFMEMORY;
393
395 impl->option = option;
396 impl->ref = 1;
397
399 {
401 {
402 free(impl);
403 return hr;
404 }
405 }
407 {
408 impl->obj = obj;
409 IUnknown_AddRef(impl->obj);
410 }
411
413
415 return S_OK;
416}
#define CO_E_NOTINITIALIZED
@ AGILEREFERENCE_DEFAULT
Definition: combaseapi.h:49
BOOL WINAPI InternalIsProcessInitialized(void)
Definition: combase.c:391
static const IAgileReferenceVtbl agile_ref_vtbl
Definition: roapi.c:349
#define calloc
Definition: rosglue.h:14
IAgileReference IAgileReference_iface
Definition: roapi.c:238
Definition: getopt.h:109
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687
#define CO_E_NOT_SUPPORTED
Definition: winerror.h:3510

Referenced by test_RoGetAgileReference().

◆ RoGetApartmentIdentifier()

HRESULT WINAPI RoGetApartmentIdentifier ( UINT64 identifier)

Definition at line 421 of file roapi.c.

422{
423 FIXME("(%p): stub\n", identifier);
424
425 if (!identifier)
426 return E_INVALIDARG;
427
428 *identifier = 0xdeadbeef;
429 return S_OK;
430}

Referenced by RoRegisterForApartmentShutdown().

◆ RoGetParameterizedTypeInstanceIID()

HRESULT WINAPI RoGetParameterizedTypeInstanceIID ( UINT32  name_element_count,
const WCHAR **  name_elements,
const IRoMetaDataLocator meta_data_locator,
GUID iid,
ROPARAMIIDHANDLE hiid 
)

Definition at line 206 of file roapi.c.

209{
210 FIXME("stub: %d %p %p %p %p\n", name_element_count, name_elements, meta_data_locator, iid, hiid);
211 if (iid) *iid = GUID_NULL;
212 if (hiid) *hiid = INVALID_HANDLE_VALUE;
213 return E_NOTIMPL;
214}
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define GUID_NULL
Definition: ks.h:106

◆ RoGetServerActivatableClasses()

HRESULT WINAPI RoGetServerActivatableClasses ( HSTRING  name,
HSTRING **  classes,
DWORD count 
)

Definition at line 454 of file roapi.c.

455{
456 FIXME("(%p, %p, %p): stub\n", name, classes, count);
457
458 if (count)
459 *count = 0;
460 return S_OK;
461}
GLuint GLuint GLsizei count
Definition: gl.h:1545
Definition: name.c:39

◆ RoInitialize()

HRESULT WINAPI RoInitialize ( RO_INIT_TYPE  type)

Definition at line 123 of file roapi.c.

124{
125 switch (type) {
128 default:
129 FIXME("type %d\n", type);
132 }
133}
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
Definition: combase.c:2803
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:279
@ COINIT_MULTITHREADED
Definition: objbase.h:280
@ RO_INIT_SINGLETHREADED
Definition: roapi.h:26
@ RO_INIT_MULTITHREADED
Definition: roapi.h:27

Referenced by test_ActivationFactories(), test_implicit_mta(), test_RoGetAgileReference(), and test_RoGetAgileReference_thread_proc().

◆ RoOriginateError()

BOOL WINAPI RoOriginateError ( HRESULT  error,
HSTRING  message 
)

Definition at line 504 of file roapi.c.

505{
506 FIXME("%#lx, %s: stub\n", error, debugstr_hstring(message));
507 return FALSE;
508}
#define FALSE
Definition: types.h:117
#define error(str)
Definition: mkdosfs.c:1605
Definition: tftpd.h:60

◆ RoOriginateErrorW()

BOOL WINAPI RoOriginateErrorW ( HRESULT  error,
UINT  max_len,
const WCHAR message 
)

Definition at line 513 of file roapi.c.

514{
515 FIXME("%#lx, %u, %p: stub\n", error, max_len, message);
516 return FALSE;
517}

◆ RoOriginateLanguageException()

BOOL WINAPI RoOriginateLanguageException ( HRESULT  error,
HSTRING  message,
IUnknown language_exception 
)

Definition at line 495 of file roapi.c.

496{
497 FIXME("%#lx, %s, %p: stub\n", error, debugstr_hstring(message), language_exception);
498 return FALSE;
499}

◆ RoRegisterActivationFactories()

HRESULT WINAPI RoRegisterActivationFactories ( HSTRING classes,
PFNGETACTIVATIONFACTORY callbacks,
UINT32  count,
RO_REGISTRATION_COOKIE cookie 
)

Definition at line 466 of file roapi.c.

468{
469 FIXME("(%p, %p, %d, %p): stub\n", classes, callbacks, count, cookie);
470
471 return S_OK;
472}
Definition: cookie.c:34

◆ RoRegisterForApartmentShutdown()

HRESULT WINAPI RoRegisterForApartmentShutdown ( IApartmentShutdown callback,
UINT64 identifier,
APARTMENT_SHUTDOWN_REGISTRATION_COOKIE *  cookie 
)

Definition at line 435 of file roapi.c.

437{
438 HRESULT hr;
439
440 FIXME("(%p, %p, %p): stub\n", callback, identifier, cookie);
441
442 hr = RoGetApartmentIdentifier(identifier);
443 if (FAILED(hr))
444 return hr;
445
446 if (cookie)
447 *cookie = (void *)0xcafecafe;
448 return S_OK;
449}
HRESULT WINAPI RoGetApartmentIdentifier(UINT64 *identifier)
Definition: roapi.c:421
static IPrintDialogCallback callback
Definition: printdlg.c:326

◆ RoSetErrorReportingFlags()

HRESULT WINAPI RoSetErrorReportingFlags ( UINT32  flags)

Definition at line 522 of file roapi.c.

523{
524 FIXME("(%08x): stub\n", flags);
525 return S_OK;
526}
GLbitfield flags
Definition: glext.h:7161

◆ RoUninitialize()

void WINAPI RoUninitialize ( void  )

Definition at line 138 of file roapi.c.

139{
141}
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: combase.c:2842

Referenced by test_ActivationFactories(), test_implicit_mta(), test_RoGetAgileReference(), and test_RoGetAgileReference_thread_proc().

◆ SetRestrictedErrorInfo()

HRESULT WINAPI SetRestrictedErrorInfo ( IRestrictedErrorInfo info)

Definition at line 486 of file roapi.c.

487{
488 FIXME( "(%p)\n", info );
489 return E_NOTIMPL;
490}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( combase  )

Variable Documentation

◆ agile_ref_vtbl

const IAgileReferenceVtbl agile_ref_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI agile_ref_QueryInterface(IAgileReference *iface, REFIID riid, void **obj)
Definition: roapi.c:268
static ULONG WINAPI agile_ref_Release(IAgileReference *iface)
Definition: roapi.c:294
static HRESULT WINAPI agile_ref_Resolve(IAgileReference *iface, REFIID riid, void **obj)
Definition: roapi.c:321
static ULONG WINAPI agile_ref_AddRef(IAgileReference *iface)
Definition: roapi.c:288

Definition at line 349 of file roapi.c.

Referenced by RoGetAgileReference().