aboutsummaryrefslogtreecommitdiff
path: root/x86_64-w64-mingw32/include/roapi.h
blob: d4146ba08033b024c65ceb257022c1312fa7134c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __ROAPI_H__
#define __ROAPI_H__

#include <winapifamily.h>
#include <windows.h>
#include <sdkddkver.h>
#include <hstring.h>
#include <inspectable.h>
#include <activation.h>

#if _WIN32_WINNT >= _WIN32_WINNT_WIN8

typedef enum RO_INIT_TYPE {
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  RO_INIT_SINGLETHREADED = 0,
#endif
  RO_INIT_MULTITHREADED  = 1
} RO_INIT_TYPE;

typedef struct { } *RO_REGISTRATION_COOKIE;

typedef HRESULT (WINAPI *PFNGETACTIVATIONFACTORY)(HSTRING, IActivationFactory **);

/* */

HRESULT WINAPI RoActivateInstance(HSTRING activatableClassId, IInspectable **instance);

HRESULT WINAPI RoGetActivationFactory(HSTRING activatableClassId, REFIID iid, void **factory);

HRESULT WINAPI RoGetApartmentIdentifier(UINT64 *apartmentIdentifier);

HRESULT WINAPI RoInitialize(RO_INIT_TYPE initType);

HRESULT WINAPI RoRegisterActivationFactories(HSTRING *activatableClassIds, PFNGETACTIVATIONFACTORY *activationFactoryCallbacks, UINT32 count, RO_REGISTRATION_COOKIE *cookie);

void WINAPI RoRevokeActivationFactories(RO_REGISTRATION_COOKIE cookie);

void WINAPI RoUninitialize(void);

typedef interface IApartmentShutdown IApartmentShutdown;
DECLARE_HANDLE (APARTMENT_SHUTDOWN_REGISTRATION_COOKIE);

HRESULT WINAPI RoRegisterForApartmentShutdown (IApartmentShutdown *callbackObj, UINT64 *apartmentId, APARTMENT_SHUTDOWN_REGISTRATION_COOKIE *regCookie);

HRESULT WINAPI RoUnregisterForApartmentShutdown (APARTMENT_SHUTDOWN_REGISTRATION_COOKIE regCookie);

HRESULT WINAPI RoGetApartmentIdentifier (UINT64 *apartmentId);

#endif

#ifdef __cplusplus

namespace Windows {
  namespace Foundation {
    __inline HRESULT Initalize (RO_INIT_TYPE it
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
	 = 0
#endif
    ) { return RoInitialize (it); }
    __inline void Uninitialize ()
    { RoUninitialize (); }

  }
}

namespace ABI {
  namespace Windows {
    namespace Foundation {
      __inline HRESULT Initialze (RO_INIT_TYPE it
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
	= 0
#endif
      ) { return RoInitialize (it); }
      __inline void Uninitialize ()
      { RoUninitialize (); }
    }
  }
}

#endif

#endif