ReactOS 0.4.16-dev-2357-g35d0dfe
compobj.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "ntstatus.h"
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "winreg.h"
#include "winuser.h"
#include "objbase.h"
#include "ole2.h"
#include "ole2ver.h"
#include "ctxtcall.h"
#include "dde.h"
#include "servprov.h"
#include "initguid.h"
#include "compobj_private.h"
#include "moniker.h"
#include "wine/debug.h"
Include dependency graph for compobj.c:

Go to the source code of this file.

Classes

struct  comclassredirect_data
 
struct  ifacepsredirect_data
 
struct  progidredirect_data
 
struct  class_reg_data
 
struct  ManualResetEvent
 

Macros

#define COBJMACROS
 
#define WIN32_NO_STATUS
 
#define USE_COM_CONTEXT_DEF
 
#define RTL_CONSTANT_STRING(s)   { sizeof(s)-sizeof((s)[0]), sizeof(s), s }
 

Typedefs

typedef struct ManualResetEvent MREImpl
 

Enumerations

enum  comclass_miscfields {
  MiscStatus = 1 , MiscStatusIcon = 2 , MiscStatusContent = 4 , MiscStatusThumbnail = 8 ,
  MiscStatusDocPrint = 16 , MiscStatus = 1 , MiscStatusIcon = 2 , MiscStatusContent = 4 ,
  MiscStatusThumbnail = 8 , MiscStatusDocPrint = 16 , MiscStatus = 1 , MiscStatusIcon = 2 ,
  MiscStatusContent = 4 , MiscStatusThumbnail = 8 , MiscStatusDocPrint = 16
}
 
enum  class_reg_data_origin { CLASS_REG_ACTCTX , CLASS_REG_REGISTRY , CLASS_REG_ACTCTX , CLASS_REG_REGISTRY }
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static enum comclass_miscfields dvaspect_to_miscfields (DWORD aspect)
 
BOOL actctx_get_miscstatus (const CLSID *clsid, DWORD aspect, DWORD *status)
 
static NTSTATUS create_key (HKEY *retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr)
 
static HKEY create_classes_root_hkey (DWORD access)
 
static HKEY get_classes_root_hkey (HKEY hkey, REGSAM access)
 
LSTATUS create_classes_key (HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
 
LSTATUS open_classes_key (HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
 
static MREImplimpl_from_ISynchronize (ISynchronize *iface)
 
static HRESULT WINAPI ISynchronize_fnQueryInterface (ISynchronize *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI ISynchronize_fnAddRef (ISynchronize *iface)
 
static ULONG WINAPI ISynchronize_fnRelease (ISynchronize *iface)
 
static HRESULT WINAPI ISynchronize_fnWait (ISynchronize *iface, DWORD dwFlags, DWORD dwMilliseconds)
 
static HRESULT WINAPI ISynchronize_fnSignal (ISynchronize *iface)
 
static HRESULT WINAPI ISynchronize_fnReset (ISynchronize *iface)
 
static MREImplimpl_from_ISynchronizeHandle (ISynchronizeHandle *iface)
 
static HRESULT WINAPI SynchronizeHandle_QueryInterface (ISynchronizeHandle *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI SynchronizeHandle_AddRef (ISynchronizeHandle *iface)
 
static ULONG WINAPI SynchronizeHandle_Release (ISynchronizeHandle *iface)
 
static HRESULT WINAPI SynchronizeHandle_GetHandle (ISynchronizeHandle *iface, HANDLE *ph)
 
HRESULT WINAPI ManualResetEvent_CreateInstance (IClassFactory *iface, IUnknown *outer, REFIID iid, void **ppv)
 
DWORD WINAPI CoBuildVersion (void)
 
HRESULT WINAPI CoInitialize (LPVOID lpReserved)
 
HRESULT COM_OpenKeyForCLSID (REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY *subkey)
 
HINSTANCE WINAPI CoLoadLibrary (LPOLESTR lpszLibName, BOOL bAutoFree)
 
void WINAPI CoFreeLibrary (HINSTANCE hLibrary)
 
void WINAPI CoFreeAllLibraries (void)
 
HRESULT WINAPI CoGetState (IUnknown **ppv)
 
HRESULT WINAPI CoSetState (IUnknown *pv)
 
HRESULT WINAPI CoTreatAsClass (REFCLSID clsidOld, REFCLSID clsidNew)
 
BOOL WINAPI CoIsOle1Class (REFCLSID clsid)
 
BOOL WINAPI IsEqualGUID (REFGUID rguid1, REFGUID rguid2)
 
HRESULT WINAPI CoAllowSetForegroundWindow (IUnknown *pUnk, void *pvReserved)
 
HRESULT WINAPI CoGetObject (LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv)
 
static BOOL get_object_dll_path (const struct class_reg_data *regdata, WCHAR *dst, DWORD dstlen)
 
HRESULT Handler_DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID reserved)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 

Variables

static HKEY classes_root_hkey
 
static ISynchronizeVtbl vt_ISynchronize
 
static const ISynchronizeHandleVtbl SynchronizeHandleVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 42 of file compobj.c.

◆ RTL_CONSTANT_STRING

#define RTL_CONSTANT_STRING (   s)    { sizeof(s)-sizeof((s)[0]), sizeof(s), s }

Definition at line 250 of file compobj.c.

◆ USE_COM_CONTEXT_DEF

#define USE_COM_CONTEXT_DEF

Definition at line 50 of file compobj.c.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 44 of file compobj.c.

Typedef Documentation

◆ MREImpl

Enumeration Type Documentation

◆ class_reg_data_origin

Enumerator
CLASS_REG_ACTCTX 
CLASS_REG_REGISTRY 
CLASS_REG_ACTCTX 
CLASS_REG_REGISTRY 

Definition at line 122 of file compobj.c.

123{
126};
@ CLASS_REG_REGISTRY
Definition: compobj.c:125
@ CLASS_REG_ACTCTX
Definition: compobj.c:124

◆ comclass_miscfields

Enumerator
MiscStatus 
MiscStatusIcon 
MiscStatusContent 
MiscStatusThumbnail 
MiscStatusDocPrint 
MiscStatus 
MiscStatusIcon 
MiscStatusContent 
MiscStatusThumbnail 
MiscStatusDocPrint 
MiscStatus 
MiscStatusIcon 
MiscStatusContent 
MiscStatusThumbnail 
MiscStatusDocPrint 

Definition at line 72 of file compobj.c.

73{
74 MiscStatus = 1,
79};
@ MiscStatusContent
Definition: compobj.c:76
@ MiscStatusThumbnail
Definition: compobj.c:77
@ MiscStatus
Definition: compobj.c:74
@ MiscStatusDocPrint
Definition: compobj.c:78
@ MiscStatusIcon
Definition: compobj.c:75

Function Documentation

◆ actctx_get_miscstatus()

BOOL actctx_get_miscstatus ( const CLSID clsid,
DWORD  aspect,
DWORD status 
)

Definition at line 160 of file compobj.c.

161{
162 ACTCTX_SECTION_KEYED_DATA data;
163
164 data.cbSize = sizeof(data);
165 if (FindActCtxSectionGuid(0, NULL, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION,
166 clsid, &data))
167 {
168 struct comclassredirect_data *comclass = (struct comclassredirect_data*)data.lpData;
170 ULONG miscmask = (comclass->flags >> 8) & 0xff;
171
172 if (!(miscmask & misc))
173 {
174 if (!(miscmask & MiscStatus))
175 {
176 *status = 0;
177 return TRUE;
178 }
179 misc = MiscStatus;
180 }
181
182 switch (misc)
183 {
184 case MiscStatus:
185 *status = comclass->miscstatus;
186 break;
187 case MiscStatusIcon:
188 *status = comclass->miscstatusicon;
189 break;
191 *status = comclass->miscstatuscontent;
192 break;
194 *status = comclass->miscstatusthumbnail;
195 break;
197 *status = comclass->miscstatusdocprint;
198 break;
199 default:
200 ;
201 };
202
203 return TRUE;
204 }
205 else
206 return FALSE;
207}
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
BOOL WINAPI FindActCtxSectionGuid(DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, const GUID *lpSearchGuid, PACTCTX_SECTION_KEYED_DATA pInfo)
Definition: actctx.c:265
comclass_miscfields
Definition: compobj.c:73
static enum comclass_miscfields dvaspect_to_miscfields(DWORD aspect)
Definition: compobj.c:143
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
const CLSID * clsid
Definition: msctf.cpp:50
DWORD miscstatuscontent
Definition: combase.c:71
DWORD miscstatusdocprint
Definition: combase.c:74
DWORD miscstatusthumbnail
Definition: combase.c:72
Definition: ps.c:97
uint32_t ULONG
Definition: typedefs.h:59

Referenced by OleRegGetMiscStatus().

◆ CoAllowSetForegroundWindow()

HRESULT WINAPI CoAllowSetForegroundWindow ( IUnknown pUnk,
void pvReserved 
)

Definition at line 812 of file compobj.c.

813{
814 FIXME("(%p, %p): stub\n", pUnk, pvReserved);
815 return S_OK;
816}
#define FIXME(fmt,...)
Definition: precomp.h:53
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
#define S_OK
Definition: intsafe.h:52
static LPCWSTR LPVOID pvReserved
Definition: asmcache.c:749

◆ CoBuildVersion()

DWORD WINAPI CoBuildVersion ( void  )

Definition at line 509 of file compobj.c.

510{
511 TRACE("Returning version %d, build %d.\n", rmm, rup);
512 return (rmm<<16)+rup;
513}
#define rup
Definition: ole2ver.h:42
#define rmm
Definition: ole2ver.h:41
#define TRACE(s)
Definition: solgame.cpp:4

◆ CoFreeAllLibraries()

void WINAPI CoFreeAllLibraries ( void  )

Definition at line 624 of file compobj.c.

625{
626 /* NOP */
627}

◆ CoFreeLibrary()

void WINAPI CoFreeLibrary ( HINSTANCE  hLibrary)

Definition at line 607 of file compobj.c.

608{
610}
HMODULE hLibrary
Definition: odbccp32.c:12
#define FreeLibrary(x)
Definition: compat.h:748

◆ CoGetObject()

HRESULT WINAPI CoGetObject ( LPCWSTR  pszName,
BIND_OPTS *  pBindOptions,
REFIID  riid,
void **  ppv 
)

Definition at line 837 of file compobj.c.

839{
840 IBindCtx *pbc;
841 HRESULT hr;
842
843 *ppv = NULL;
844
845 hr = CreateBindCtx(0, &pbc);
846 if (SUCCEEDED(hr))
847 {
848 if (pBindOptions)
849 hr = IBindCtx_SetBindOptions(pbc, pBindOptions);
850
851 if (SUCCEEDED(hr))
852 {
853 ULONG chEaten;
854 IMoniker *pmk;
855
856 hr = MkParseDisplayName(pbc, pszName, &chEaten, &pmk);
857 if (SUCCEEDED(hr))
858 {
859 hr = IMoniker_BindToObject(pmk, pbc, NULL, riid, ppv);
860 IMoniker_Release(pmk);
861 }
862 }
863
864 IBindCtx_Release(pbc);
865 }
866 return hr;
867}
HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szDisplayName, LPDWORD pchEaten, LPMONIKER *ppmk)
Definition: moniker.c:838
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT WINAPI CreateBindCtx(DWORD reserved, IBindCtx **bind_context)
Definition: bindctx.c:491
HRESULT hr
Definition: shlfolder.c:183

◆ CoGetState()

HRESULT WINAPI CoGetState ( IUnknown **  ppv)

Definition at line 649 of file compobj.c.

650{
651 struct oletls *info = COM_CurrentInfo();
652 if (!info) return E_OUTOFMEMORY;
653
654 *ppv = NULL;
655
656 if (info->state)
657 {
658 IUnknown_AddRef(info->state);
659 *ppv = info->state;
660 TRACE("apt->state=%p\n", info->state);
661 }
662
663 return S_OK;
664}
static struct oletls * COM_CurrentInfo(void)
#define E_OUTOFMEMORY
Definition: ddrawi.h:100

◆ CoInitialize()

HRESULT WINAPI CoInitialize ( LPVOID  lpReserved)

Definition at line 531 of file compobj.c.

532{
533 /*
534 * Just delegate to the newer method.
535 */
537}
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
Definition: combase.c:2803
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:279
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
Definition: winnls.h:1268

Referenced by _CmdWndProc(), CRecyclerDropTarget::_DoDeleteThreadProc(), ACTION_CreateShortcuts(), AMovieDllRegisterServer2(), bsc_thread(), cache_across_threads_test(), cache_InstallAssembly(), cache_UninstallAssembly(), call_script(), CGuidItemExtractIcon_CreateInstance(), ChooseFolder(), ComInit::ComInit(), cowait_unmarshal_thread(), crash_couninitialize_proc(), CreateSecurityPage(), CreateShortcut(), CreateShortcuts(), DisplayWizard(), DllMain(), DllRegisterServer(), CTipbarCoInitialize::EnsureCoInit(), get_global_interface_proc(), IEWinMain(), init_test(), initialize(), InitIconOverlays(), install_wine_mono(), InstallNetworkComponent(), LoadShellLinkConsoleInfo(), local_server_proc(), main(), MsiGetShortcutTargetW(), new_thread(), OLEPictureImpl_LoadWICDecoder(), OpenControlPanelItem(), query_prop(), register_filters(), RegisterComCat(), run_script(), RunOnceExProcess(), SHAddToRecentDocs(), SHCreateFromDesktop(), SHELL32_FileOperation(), ShowPerformanceOptions(), START_TEST(), test_call_cancellation(), test_click_make_new_folder_button(), test_CoCreateInstanceEx(), test_CoCreateInstanceFromApp(), test_CoGetCallContext(), test_CoGetContextToken(), test_controlevent(), test_DPA_LoadStream(), test_DPA_SaveStream(), test_externalui_message(), test_GetDefaultColumn(), test_GetDefaultSearchGUID(), test_GlobalOptions(), test_iface_ptr(), test_inmemorystore(), test_IWinHttpRequest(), test_IWinHttpRequest_Invoke(), test_knownFolders(), test_MsiSetComponentState(), test_OleInitialize_InitCounting(), test_oletlsdata(), test_packagecoltypes(), test_persistserialized(), test_printers_folder(), test_properties(), test_PSRefreshPropertySchema(), test_selection(), test_set_clipboard(), test_StreamOnStreamRange(), test_top_level_action(), unregister_filters(), WinMain(), wmain(), and wWinMain().

◆ CoIsOle1Class()

BOOL WINAPI CoIsOle1Class ( REFCLSID  clsid)

Definition at line 782 of file compobj.c.

783{
784 FIXME("%s\n", debugstr_guid(clsid));
785 return FALSE;
786}
#define debugstr_guid
Definition: kernel32.h:35

◆ CoLoadLibrary()

HINSTANCE WINAPI CoLoadLibrary ( LPOLESTR  lpszLibName,
BOOL  bAutoFree 
)

Definition at line 586 of file compobj.c.

587{
588 TRACE("(%s, %d)\n", debugstr_w(lpszLibName), bAutoFree);
589
590 return LoadLibraryExW(lpszLibName, 0, LOAD_WITH_ALTERED_SEARCH_PATH);
591}
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
Definition: loader.c:288
#define debugstr_w
Definition: kernel32.h:32
#define LOAD_WITH_ALTERED_SEARCH_PATH
Definition: winbase.h:340

◆ COM_OpenKeyForCLSID()

HRESULT COM_OpenKeyForCLSID ( REFCLSID  clsid,
LPCWSTR  keyname,
REGSAM  access,
HKEY subkey 
)

Definition at line 540 of file compobj.c.

541{
542 WCHAR path[CHARS_IN_GUID + ARRAY_SIZE(L"CLSID\\") - 1];
543 LONG res;
544 HKEY key;
545
546 lstrcpyW(path, L"CLSID\\");
550 return REGDB_E_CLASSNOTREG;
551 else if (res != ERROR_SUCCESS)
552 return REGDB_E_READREGDB;
553
554 if (!keyname)
555 {
556 *subkey = key;
557 return S_OK;
558 }
559
560 res = open_classes_key(key, keyname, access, subkey);
563 return REGDB_E_KEYMISSING;
564 else if (res != ERROR_SUCCESS)
565 return REGDB_E_READREGDB;
566
567 return S_OK;
568}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define RegCloseKey(hKey)
Definition: registry.h:49
#define CHARS_IN_GUID
#define ERROR_SUCCESS
Definition: deptool.c:10
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
Definition: combase.c:1525
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750
LSTATUS open_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
Definition: compobj.c:328
#define L(x)
Definition: resources.c:13
GLuint res
Definition: glext.h:9613
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define KEY_READ
Definition: nt_native.h:1026
long LONG
Definition: pedump.c:60
Definition: copy.c:22
#define REGDB_E_CLASSNOTREG
Definition: winerror.h:3801
#define REGDB_E_READREGDB
Definition: winerror.h:3797
#define REGDB_E_KEYMISSING
Definition: winerror.h:3799
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by CoTreatAsClass(), Handler_DllGetClassObject(), OleGetAutoConvert(), OleRegEnumVerbs(), OleRegGetMiscStatus(), OleRegGetUserType(), and OleSetAutoConvert().

◆ CoSetState()

HRESULT WINAPI CoSetState ( IUnknown pv)

Definition at line 681 of file compobj.c.

682{
683 struct oletls *info = COM_CurrentInfo();
684 if (!info) return E_OUTOFMEMORY;
685
686 if (pv) IUnknown_AddRef(pv);
687
688 if (info->state)
689 {
690 TRACE("-- release %p now\n", info->state);
691 IUnknown_Release(info->state);
692 }
693
694 info->state = pv;
695
696 return S_OK;
697}

◆ CoTreatAsClass()

HRESULT WINAPI CoTreatAsClass ( REFCLSID  clsidOld,
REFCLSID  clsidNew 
)

Definition at line 716 of file compobj.c.

717{
718 HKEY hkey = NULL;
719 WCHAR szClsidNew[CHARS_IN_GUID];
720 HRESULT res = S_OK;
721 WCHAR auto_treat_as[CHARS_IN_GUID];
722 LONG auto_treat_as_size = sizeof(auto_treat_as);
723 CLSID id;
724
725 res = COM_OpenKeyForCLSID(clsidOld, NULL, KEY_READ | KEY_WRITE, &hkey);
726 if (FAILED(res))
727 goto done;
728
729 if (IsEqualGUID( clsidOld, clsidNew ))
730 {
731 if (!RegQueryValueW(hkey, L"AutoTreatAs", auto_treat_as, &auto_treat_as_size) &&
732 CLSIDFromString(auto_treat_as, &id) == S_OK)
733 {
734 if (RegSetValueW(hkey, L"TreatAs", REG_SZ, auto_treat_as, sizeof(auto_treat_as)))
735 {
737 goto done;
738 }
739 }
740 else
741 {
742 if (RegDeleteKeyW(hkey, L"TreatAs"))
744 goto done;
745 }
746 }
747 else
748 {
749 if(IsEqualGUID(clsidNew, &CLSID_NULL)){
750 RegDeleteKeyW(hkey, L"TreatAs");
751 }else{
752 if(!StringFromGUID2(clsidNew, szClsidNew, ARRAY_SIZE(szClsidNew))){
753 WARN("StringFromGUID2 failed\n");
754 res = E_FAIL;
755 goto done;
756 }
757
758 if (RegSetValueW(hkey, L"TreatAs", REG_SZ, szClsidNew, sizeof(szClsidNew)) != ERROR_SUCCESS){
759 WARN("RegSetValue failed\n");
761 goto done;
762 }
763 }
764 }
765
766done:
767 if (hkey) RegCloseKey(hkey);
768 return res;
769}
#define WARN(fmt,...)
Definition: precomp.h:61
#define E_FAIL
Definition: ddrawi.h:102
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1239
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4241
LONG WINAPI RegSetValueW(HKEY hKeyOriginal, LPCWSTR lpSubKey, DWORD dwType, LPCWSTR lpData, DWORD cbData)
Definition: reg.c:5000
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
Definition: combase.c:1470
HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY *subkey)
Definition: compobj.c:540
GLuint id
Definition: glext.h:5910
#define FAILED(hr)
Definition: intsafe.h:51
#define REG_SZ
Definition: layer.c:22
#define KEY_WRITE
Definition: nt_native.h:1034
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define CLSID_NULL
Definition: guiddef.h:99
#define REGDB_E_WRITEREGDB
Definition: winerror.h:3798

Referenced by test_TreatAsClass().

◆ create_classes_key()

LSTATUS create_classes_key ( HKEY  hkey,
const WCHAR name,
REGSAM  access,
HKEY retkey 
)

Definition at line 306 of file compobj.c.

307{
310
311 if (!(hkey = get_classes_root_hkey( hkey, access ))) return ERROR_INVALID_HANDLE;
312
313 attr.Length = sizeof(attr);
314 attr.RootDirectory = hkey;
315 attr.ObjectName = &nameW;
316#ifdef __REACTOS__
317 attr.Attributes = OBJ_CASE_INSENSITIVE;
318#else
319 attr.Attributes = 0;
320#endif
321 attr.SecurityDescriptor = NULL;
322 attr.SecurityQualityOfService = NULL;
324
325 return RtlNtStatusToDosError( create_key( retkey, access, &attr ) );
326}
static const WCHAR nameW[]
Definition: main.c:49
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
static HKEY get_classes_root_hkey(HKEY hkey, REGSAM access)
Definition: compobj.c:286
static NTSTATUS create_key(HKEY *retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr)
Definition: compobj.c:210
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
Definition: cookie.c:202
Definition: name.c:39
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)

Referenced by get_classes_root_hkey().

◆ create_classes_root_hkey()

static HKEY create_classes_root_hkey ( DWORD  access)
static

Definition at line 254 of file compobj.c.

255{
256 HKEY hkey, ret = 0;
258 UNICODE_STRING name = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\Software\\Classes");
259
260 attr.Length = sizeof(attr);
261 attr.RootDirectory = 0;
262 attr.ObjectName = &name;
263#ifdef __REACTOS__
264 attr.Attributes = OBJ_CASE_INSENSITIVE;
265#else
266 attr.Attributes = 0;
267#endif
268 attr.SecurityDescriptor = NULL;
269 attr.SecurityQualityOfService = NULL;
270 if (create_key( &hkey, access, &attr )) return 0;
271 TRACE( "%s -> %p\n", debugstr_w(attr.ObjectName->Buffer), hkey );
272
273 if (!(access & KEY_WOW64_64KEY))
274 {
275 if (!(ret = InterlockedCompareExchangePointer( (void **)&classes_root_hkey, hkey, 0 )))
276 ret = hkey;
277 else
278 NtClose( hkey ); /* somebody beat us to it */
279 }
280 else
281 ret = hkey;
282 return ret;
283}
#define RTL_CONSTANT_STRING(s)
Definition: compobj.c:250
static HKEY classes_root_hkey
Definition: compobj.c:247
return ret
Definition: mutex.c:146
#define InterlockedCompareExchangePointer
Definition: interlocked.h:144
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3402
#define KEY_WOW64_64KEY
Definition: cmtypes.h:46

Referenced by get_classes_root_hkey().

◆ create_key()

static NTSTATUS create_key ( HKEY retkey,
ACCESS_MASK  access,
const OBJECT_ATTRIBUTES attr 
)
static

Definition at line 210 of file compobj.c.

211{
212 NTSTATUS status = NtCreateKey( (HANDLE *)retkey, access, attr, 0, NULL, 0, NULL );
213
215 {
216 HANDLE subkey;
217 WCHAR *buffer = attr->ObjectName->Buffer;
218 DWORD pos = 0, i = 0, len = attr->ObjectName->Length / sizeof(WCHAR);
220 OBJECT_ATTRIBUTES attr2 = *attr;
221
222 while (i < len && buffer[i] != '\\') i++;
223 if (i == len) return status;
224
225 attr2.ObjectName = &str;
226
227 while (i < len)
228 {
229 str.Buffer = buffer + pos;
230 str.Length = (i - pos) * sizeof(WCHAR);
231 status = NtCreateKey( &subkey, access, &attr2, 0, NULL, 0, NULL );
232 if (attr2.RootDirectory != attr->RootDirectory) NtClose( attr2.RootDirectory );
233 if (status) return status;
234 attr2.RootDirectory = subkey;
235 while (i < len && buffer[i] == '\\') i++;
236 pos = i;
237 while (i < len && buffer[i] != '\\') i++;
238 }
239 str.Buffer = buffer + pos;
240 str.Length = (i - pos) * sizeof(WCHAR);
241 status = NtCreateKey( (PHANDLE)retkey, access, &attr2, 0, NULL, 0, NULL );
242 if (attr2.RootDirectory != attr->RootDirectory) NtClose( attr2.RootDirectory );
243 }
244 return status;
245}
LONG NTSTATUS
Definition: precomp.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint buffer
Definition: glext.h:5915
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
Definition: ntapi.c:240
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
const WCHAR * str
HANDLE RootDirectory
Definition: umtypes.h:186
PUNICODE_STRING ObjectName
Definition: umtypes.h:187
#define STATUS_OBJECT_NAME_NOT_FOUND
Definition: udferr_usr.h:149

Referenced by create_classes_key(), and create_classes_root_hkey().

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinstDLL,
DWORD  fdwReason,
LPVOID  reserved 
)

Definition at line 944 of file compobj.c.

945{
946 TRACE("%p, %#lx, %p.\n", hinstDLL, fdwReason, reserved);
947
948 switch(fdwReason) {
950 hProxyDll = hinstDLL;
951 break;
952
955 if (reserved) break;
957 break;
958 }
959 return TRUE;
960}
static DWORD const fdwReason
void release_std_git(void)
Definition: git.c:327
HINSTANCE hProxyDll
Definition: combase.c:40
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
void clipbrd_destroy(void)
Definition: clipboard.c:2038
r reserved
Definition: btrfs.c:3006

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 965 of file compobj.c.

966{
968}
HRESULT WINAPI OLE32_DllRegisterServer(void)

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 973 of file compobj.c.

974{
976}
HRESULT WINAPI OLE32_DllUnregisterServer(void)

◆ dvaspect_to_miscfields()

static enum comclass_miscfields dvaspect_to_miscfields ( DWORD  aspect)
inlinestatic

Definition at line 143 of file compobj.c.

144{
145 switch (aspect)
146 {
147 case DVASPECT_CONTENT:
148 return MiscStatusContent;
149 case DVASPECT_THUMBNAIL:
150 return MiscStatusThumbnail;
151 case DVASPECT_ICON:
152 return MiscStatusIcon;
153 case DVASPECT_DOCPRINT:
154 return MiscStatusDocPrint;
155 default:
156 return MiscStatus;
157 };
158}

Referenced by actctx_get_miscstatus().

◆ get_classes_root_hkey()

static HKEY get_classes_root_hkey ( HKEY  hkey,
REGSAM  access 
)
inlinestatic

Definition at line 286 of file compobj.c.

287{
288 HKEY ret = hkey;
289 const BOOL is_win64 = sizeof(void*) > sizeof(int);
290 const BOOL force_wow32 = is_win64 && (access & KEY_WOW64_32KEY);
291
292 if (hkey == HKEY_CLASSES_ROOT &&
295 if (force_wow32 && ret && ret == classes_root_hkey)
296 {
297 access &= ~KEY_WOW64_32KEY;
298 if (create_classes_key(classes_root_hkey, L"Wow6432Node", access, &hkey))
299 return 0;
300 ret = hkey;
301 }
302
303 return ret;
304}
static HKEY create_classes_root_hkey(DWORD access)
Definition: compobj.c:254
LSTATUS create_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
Definition: compobj.c:306
unsigned int BOOL
Definition: ntddk_ex.h:94
static const BOOL is_win64
Definition: kernelbase.h:49
#define MAXIMUM_ALLOWED
Definition: nt_native.h:83
#define KEY_WOW64_32KEY
Definition: cmtypes.h:45

Referenced by create_classes_key(), and open_classes_key().

◆ get_object_dll_path()

static BOOL get_object_dll_path ( const struct class_reg_data regdata,
WCHAR dst,
DWORD  dstlen 
)
static

Definition at line 870 of file compobj.c.

871{
872 DWORD ret;
873
874 if (regdata->origin == CLASS_REG_REGISTRY)
875 {
876 DWORD keytype;
878 DWORD dwLength = dstlen * sizeof(WCHAR);
879
880 if( (ret = RegQueryValueExW(regdata->u.hkey, NULL, NULL, &keytype, (BYTE*)src, &dwLength)) == ERROR_SUCCESS ) {
881 if (keytype == REG_EXPAND_SZ) {
883 } else {
884 const WCHAR *quote_start;
885 quote_start = wcschr(src, '\"');
886 if (quote_start) {
887 const WCHAR *quote_end = wcschr(quote_start + 1, '\"');
888 if (quote_end) {
889 memmove(src, quote_start + 1,
890 (quote_end - quote_start - 1) * sizeof(WCHAR));
891 src[quote_end - quote_start - 1] = '\0';
892 }
893 }
895 }
896 }
897 return !ret;
898 }
899 else
900 {
902
903 *dst = 0;
904 ActivateActCtx(regdata->u.actctx.hactctx, &cookie);
905 ret = SearchPathW(NULL, regdata->u.actctx.module_name, L".dll", dstlen, dst, NULL);
907 return *dst != 0;
908 }
909}
#define ERROR_MORE_DATA
Definition: dderror.h:13
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
#define wcschr
Definition: compat.h:17
#define MAX_PATH
Definition: compat.h:34
#define lstrcpynW
Definition: compat.h:738
static DWORD DWORD * dwLength
Definition: fusion.c:86
BOOL WINAPI DeactivateActCtx(IN DWORD dwFlags, IN ULONG_PTR ulCookie)
Definition: actctx.c:268
BOOL WINAPI ActivateActCtx(IN HANDLE hActCtx, OUT PULONG_PTR ulCookie)
Definition: actctx.c:237
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:520
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
Definition: path.c:1298
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
static DWORD dstlen
Definition: directory.c:51
#define REG_EXPAND_SZ
Definition: nt_native.h:1497
union class_reg_data::@323 u
enum class_reg_data_origin origin
struct class_reg_data::@323::@324 actctx
Definition: cookie.c:34
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char BYTE
Definition: xxhash.c:193

Referenced by Handler_DllGetClassObject().

◆ Handler_DllGetClassObject()

HRESULT Handler_DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 911 of file compobj.c.

912{
913 HKEY hkey;
915
916 hres = COM_OpenKeyForCLSID(rclsid, L"InprocHandler32", KEY_READ, &hkey);
917 if (SUCCEEDED(hres))
918 {
919 struct class_reg_data regdata;
921
922 regdata.u.hkey = hkey;
923 regdata.origin = CLASS_REG_REGISTRY;
924
926 {
927 if (!wcsicmp(dllpath, L"ole32.dll"))
928 {
930 return HandlerCF_Create(rclsid, riid, ppv);
931 }
932 }
933 else
934 WARN("not creating object for inproc handler path %s\n", debugstr_w(dllpath));
936 }
937
939}
HRESULT HandlerCF_Create(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
#define wcsicmp
Definition: compat.h:15
static BOOL get_object_dll_path(const struct class_reg_data *regdata, WCHAR *dst, DWORD dstlen)
Definition: compobj.c:870
WCHAR dllpath[MAX_PATH]
HRESULT hres
Definition: protocol.c:465
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

Referenced by DllGetClassObject().

◆ impl_from_ISynchronize()

static MREImpl * impl_from_ISynchronize ( ISynchronize iface)
inlinestatic

Definition at line 361 of file compobj.c.

362{
363 return CONTAINING_RECORD(iface, MREImpl, ISynchronize_iface);
364}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by ISynchronize_fnAddRef(), ISynchronize_fnQueryInterface(), ISynchronize_fnRelease(), ISynchronize_fnReset(), ISynchronize_fnSignal(), and ISynchronize_fnWait().

◆ impl_from_ISynchronizeHandle()

static MREImpl * impl_from_ISynchronizeHandle ( ISynchronizeHandle iface)
inlinestatic

Definition at line 443 of file compobj.c.

444{
445 return CONTAINING_RECORD(iface, MREImpl, ISynchronizeHandle_iface);
446}

Referenced by SynchronizeHandle_AddRef(), SynchronizeHandle_GetHandle(), SynchronizeHandle_QueryInterface(), and SynchronizeHandle_Release().

◆ IsEqualGUID()

BOOL WINAPI IsEqualGUID ( REFGUID  rguid1,
REFGUID  rguid2 
)

Definition at line 801 of file compobj.c.

804{
805 return !memcmp(rguid1,rguid2,sizeof(GUID));
806}
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2802

◆ ISynchronize_fnAddRef()

static ULONG WINAPI ISynchronize_fnAddRef ( ISynchronize iface)
static

Definition at line 386 of file compobj.c.

387{
390 TRACE("%p, refcount %ld.\n", iface, ref);
391
392 return ref;
393}
#define InterlockedIncrement
Definition: armddk.h:53
static MREImpl * impl_from_ISynchronize(ISynchronize *iface)
Definition: compobj.c:361
Definition: send.c:48

◆ ISynchronize_fnQueryInterface()

static HRESULT WINAPI ISynchronize_fnQueryInterface ( ISynchronize iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 366 of file compobj.c.

367{
369
370 TRACE("%p (%s, %p)\n", This, debugstr_guid(riid), ppv);
371
372 if(IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_ISynchronize)) {
373 *ppv = &This->ISynchronize_iface;
374 }else if(IsEqualGUID(riid, &IID_ISynchronizeHandle)) {
375 *ppv = &This->ISynchronizeHandle_iface;
376 }else {
377 ERR("Unknown interface %s requested.\n", debugstr_guid(riid));
378 *ppv = NULL;
379 return E_NOINTERFACE;
380 }
381
382 IUnknown_AddRef((IUnknown*)*ppv);
383 return S_OK;
384}
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ ISynchronize_fnRelease()

static ULONG WINAPI ISynchronize_fnRelease ( ISynchronize iface)
static

Definition at line 395 of file compobj.c.

396{
399 TRACE("%p, refcount %ld.\n", iface, ref);
400
401 if(!ref)
402 {
403 CloseHandle(This->event);
405 }
406
407 return ref;
408}
#define InterlockedDecrement
Definition: armddk.h:52
#define CloseHandle
Definition: compat.h:739
#define GetProcessHeap()
Definition: compat.h:736
#define HeapFree(x, y, z)
Definition: compat.h:735

◆ ISynchronize_fnReset()

static HRESULT WINAPI ISynchronize_fnReset ( ISynchronize iface)
static

Definition at line 426 of file compobj.c.

427{
429 TRACE("%p\n", This);
430 ResetEvent(This->event);
431 return S_OK;
432}
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
Definition: synch.c:650

◆ ISynchronize_fnSignal()

static HRESULT WINAPI ISynchronize_fnSignal ( ISynchronize iface)
static

Definition at line 418 of file compobj.c.

419{
421 TRACE("%p\n", This);
422 SetEvent(This->event);
423 return S_OK;
424}
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:669

◆ ISynchronize_fnWait()

static HRESULT WINAPI ISynchronize_fnWait ( ISynchronize iface,
DWORD  dwFlags,
DWORD  dwMilliseconds 
)
static

Definition at line 410 of file compobj.c.

411{
413 DWORD index;
414 TRACE("%p, %#lx, %#lx.\n", iface, dwFlags, dwMilliseconds);
415 return CoWaitForMultipleHandles(dwFlags, dwMilliseconds, 1, &This->event, &index);
416}
#define index(s, c)
Definition: various.h:29
HRESULT WINAPI CoWaitForMultipleHandles(DWORD flags, DWORD timeout, ULONG handle_count, HANDLE *handles, DWORD *index)
Definition: combase.c:2067
GLuint index
Definition: glext.h:6031
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ ManualResetEvent_CreateInstance()

HRESULT WINAPI ManualResetEvent_CreateInstance ( IClassFactory iface,
IUnknown outer,
REFIID  iid,
void **  ppv 
)

Definition at line 481 of file compobj.c.

482{
484 HRESULT hr;
485
486 if (outer)
487 FIXME("Aggregation not implemented.\n");
488
489 This->ref = 1;
490 This->ISynchronize_iface.lpVtbl = &vt_ISynchronize;
491 This->ISynchronizeHandle_iface.lpVtbl = &SynchronizeHandleVtbl;
492 This->event = CreateEventW(NULL, TRUE, FALSE, NULL);
493
494 hr = ISynchronize_QueryInterface(&This->ISynchronize_iface, iid, ppv);
495 ISynchronize_Release(&This->ISynchronize_iface);
496 return hr;
497}
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
static ISynchronizeVtbl vt_ISynchronize
Definition: compobj.c:434
static const ISynchronizeHandleVtbl SynchronizeHandleVtbl
Definition: compobj.c:474
static IUnknown * outer
Definition: compobj.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587

◆ open_classes_key()

LSTATUS open_classes_key ( HKEY  hkey,
const WCHAR name,
REGSAM  access,
HKEY retkey 
)

Definition at line 328 of file compobj.c.

329{
332
333 if (!(hkey = get_classes_root_hkey( hkey, access ))) return ERROR_INVALID_HANDLE;
334
335 attr.Length = sizeof(attr);
336 attr.RootDirectory = hkey;
337 attr.ObjectName = &nameW;
338#ifdef __REACTOS__
339 attr.Attributes = OBJ_CASE_INSENSITIVE;
340#else
341 attr.Attributes = 0;
342#endif
343 attr.SecurityDescriptor = NULL;
344 attr.SecurityQualityOfService = NULL;
346
347 return RtlNtStatusToDosError( NtOpenKey( (HANDLE *)retkey, access, &attr ) );
348}
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: ntapi.c:336

Referenced by COM_OpenKeyForCLSID().

◆ SynchronizeHandle_AddRef()

static ULONG WINAPI SynchronizeHandle_AddRef ( ISynchronizeHandle iface)
static

Definition at line 454 of file compobj.c.

455{
457 return ISynchronize_AddRef(&This->ISynchronize_iface);
458}
static MREImpl * impl_from_ISynchronizeHandle(ISynchronizeHandle *iface)
Definition: compobj.c:443

◆ SynchronizeHandle_GetHandle()

static HRESULT WINAPI SynchronizeHandle_GetHandle ( ISynchronizeHandle iface,
HANDLE ph 
)
static

Definition at line 466 of file compobj.c.

467{
469
470 *ph = This->event;
471 return S_OK;
472}

◆ SynchronizeHandle_QueryInterface()

static HRESULT WINAPI SynchronizeHandle_QueryInterface ( ISynchronizeHandle iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 448 of file compobj.c.

449{
451 return ISynchronize_QueryInterface(&This->ISynchronize_iface, riid, ppv);
452}

◆ SynchronizeHandle_Release()

static ULONG WINAPI SynchronizeHandle_Release ( ISynchronizeHandle iface)
static

Definition at line 460 of file compobj.c.

461{
463 return ISynchronize_Release(&This->ISynchronize_iface);
464}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ classes_root_hkey

HKEY classes_root_hkey
static

Definition at line 247 of file compobj.c.

Referenced by create_classes_root_hkey(), and get_classes_root_hkey().

◆ SynchronizeHandleVtbl

const ISynchronizeHandleVtbl SynchronizeHandleVtbl
static
Initial value:
= {
}
static HRESULT WINAPI SynchronizeHandle_QueryInterface(ISynchronizeHandle *iface, REFIID riid, void **ppv)
Definition: compobj.c:448
static ULONG WINAPI SynchronizeHandle_AddRef(ISynchronizeHandle *iface)
Definition: compobj.c:454
static ULONG WINAPI SynchronizeHandle_Release(ISynchronizeHandle *iface)
Definition: compobj.c:460
static HRESULT WINAPI SynchronizeHandle_GetHandle(ISynchronizeHandle *iface, HANDLE *ph)
Definition: compobj.c:466

Definition at line 474 of file compobj.c.

Referenced by ManualResetEvent_CreateInstance().

◆ vt_ISynchronize

ISynchronizeVtbl vt_ISynchronize
static
Initial value:
= {
}
static HRESULT WINAPI ISynchronize_fnReset(ISynchronize *iface)
Definition: compobj.c:426
static ULONG WINAPI ISynchronize_fnRelease(ISynchronize *iface)
Definition: compobj.c:395
static ULONG WINAPI ISynchronize_fnAddRef(ISynchronize *iface)
Definition: compobj.c:386
static HRESULT WINAPI ISynchronize_fnQueryInterface(ISynchronize *iface, REFIID riid, void **ppv)
Definition: compobj.c:366
static HRESULT WINAPI ISynchronize_fnSignal(ISynchronize *iface)
Definition: compobj.c:418
static HRESULT WINAPI ISynchronize_fnWait(ISynchronize *iface, DWORD dwFlags, DWORD dwMilliseconds)
Definition: compobj.c:410

Definition at line 434 of file compobj.c.

Referenced by ManualResetEvent_CreateInstance().