ReactOS 0.4.17-dev-806-gffa4164
atl30.c File Reference
#include <stdio.h>
#include "objidl.h"
#include "rpcproxy.h"
#include "atlbase.h"
#include "atlwin.h"
#include "wine/debug.h"
Include dependency graph for atl30.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 
#define ATLVer1Size   FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer)
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (atl)
 
HRESULT WINAPI AtlModuleInit (_ATL_MODULEW *pM, _ATL_OBJMAP_ENTRYW *p, HINSTANCE h)
 
static _ATL_OBJMAP_ENTRYW_V1get_objmap_entry (_ATL_MODULEW *mod, unsigned int index)
 
HRESULT WINAPI AtlModuleLoadTypeLib (_ATL_MODULEW *pM, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib)
 
HRESULT WINAPI AtlModuleTerm (_ATL_MODULE *pM)
 
HRESULT WINAPI AtlModuleRegisterClassObjects (_ATL_MODULEW *pM, DWORD dwClsContext, DWORD dwFlags)
 
HRESULT WINAPI AtlModuleUnregisterServerEx (_ATL_MODULEW *pM, BOOL bUnRegTypeLib, const CLSID *pCLSID)
 
HRESULT WINAPI AtlModuleRegisterServer (_ATL_MODULEW *pM, BOOL bRegTypeLib, const CLSID *clsid)
 
HRESULT WINAPI AtlModuleGetClassObject (_ATL_MODULEW *pm, REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI AtlModuleRegisterTypeLib (_ATL_MODULEW *pm, LPCOLESTR lpszIndex)
 
HRESULT WINAPI AtlModuleRevokeClassObjects (_ATL_MODULEW *pm)
 
HRESULT WINAPI AtlModuleUnregisterServer (_ATL_MODULEW *pm, const CLSID *clsid)
 
ATOM WINAPI AtlModuleRegisterWndClassInfoA (_ATL_MODULEA *pm, _ATL_WNDCLASSINFOA *wci, WNDPROC *pProc)
 
ATOM WINAPI AtlModuleRegisterWndClassInfoW (_ATL_MODULEW *pm, _ATL_WNDCLASSINFOW *wci, WNDPROC *pProc)
 
void WINAPI AtlModuleAddCreateWndData (_ATL_MODULEW *pM, _AtlCreateWndData *pData, void *pvObject)
 
void *WINAPI AtlModuleExtractCreateWndData (_ATL_MODULEW *pM)
 
HRESULT WINAPI AtlModuleUpdateRegistryFromResourceD (_ATL_MODULEW *pM, LPCOLESTR lpszRes, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries, IRegistrar *pReg)
 
static HRESULT WINAPI RegistrarCF_QueryInterface (IClassFactory *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI RegistrarCF_AddRef (IClassFactory *iface)
 
static ULONG WINAPI RegistrarCF_Release (IClassFactory *iface)
 
static HRESULT WINAPI RegistrarCF_CreateInstance (IClassFactory *iface, LPUNKNOWN pUnkOuter, REFIID riid, void **ppv)
 
static HRESULT WINAPI RegistrarCF_LockServer (IClassFactory *iface, BOOL lock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID clsid, REFIID riid, LPVOID *ppvObject)
 

Variables

static const IClassFactoryVtbl IRegistrarCFVtbl
 
static IClassFactory RegistrarCF = { &IRegistrarCFVtbl }
 

Macro Definition Documentation

◆ ATLVer1Size

#define ATLVer1Size   FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer)

Definition at line 35 of file atl30.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file atl30.c.

Function Documentation

◆ AtlModuleAddCreateWndData()

void WINAPI AtlModuleAddCreateWndData ( _ATL_MODULEW pM,
_AtlCreateWndData pData,
void pvObject 
)

Definition at line 399 of file atl30.c.

400{
401 TRACE("(%p, %p, %p)\n", pM, pData, pvObject);
402
403 pData->m_pThis = pvObject;
404 pData->m_dwThreadID = GetCurrentThreadId();
405
407 pData->m_pNext = pM->m_pCreateWndList;
410}
#define TRACE(s)
Definition: solgame.cpp:4
CRITICAL_SECTION m_csWindowCreate
Definition: atlbase.h:170
_AtlCreateWndData * m_pCreateWndList
Definition: atlbase.h:174
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by test_winmodule().

◆ AtlModuleExtractCreateWndData()

void *WINAPI AtlModuleExtractCreateWndData ( _ATL_MODULEW pM)

Definition at line 419 of file atl30.c.

420{
422 void *ret = NULL;
423
424 TRACE("(%p)\n", pM);
425
427
428 for(ppData = &pM->m_pCreateWndList; *ppData!=NULL; ppData = &(*ppData)->m_pNext)
429 {
430 if ((*ppData)->m_dwThreadID == GetCurrentThreadId())
431 {
433 *ppData = pData->m_pNext;
434 ret = pData->m_pThis;
435 break;
436 }
437 }
438
440 return ret;
441}
#define NULL
Definition: types.h:112
return ret
Definition: mutex.c:147
PSDBQUERYRESULT_VISTA PVOID * ppData
Definition: env.c:56

Referenced by test_winmodule().

◆ AtlModuleGetClassObject()

HRESULT WINAPI AtlModuleGetClassObject ( _ATL_MODULEW pm,
REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 225 of file atl30.c.

227{
229 int i;
231
232 TRACE("%p %s %s %p\n", pm, debugstr_guid(rclsid), debugstr_guid(riid), ppv);
233
234 if (pm == NULL)
235 return E_INVALIDARG;
236
237 for (i = 0; (obj = get_objmap_entry( pm, i )) != NULL; i++)
238 {
239 if (IsEqualCLSID(obj->pclsid, rclsid))
240 {
241 TRACE("found object %i\n", i);
242 if (obj->pfnGetClassObject)
243 {
244 if (!obj->pCF)
245 hres = obj->pfnGetClassObject(obj->pfnCreateInstance,
247 (void **)&obj->pCF);
248 if (obj->pCF)
249 hres = IUnknown_QueryInterface(obj->pCF, riid, ppv);
250 return hres;
251 }
252 }
253 }
254
255 WARN("no class object found for %s\n", debugstr_guid(rclsid));
256
257 return hres;
258}
static _ATL_OBJMAP_ENTRYW_V1 * get_objmap_entry(_ATL_MODULEW *mod, unsigned int index)
Definition: atl30.c:86
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define E_INVALIDARG
Definition: ddrawi.h:101
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
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
static LPMONITOREX pm
Definition: localmon.c:45
HRESULT hres
Definition: protocol.c:465
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ AtlModuleInit()

HRESULT WINAPI AtlModuleInit ( _ATL_MODULEW pM,
_ATL_OBJMAP_ENTRYW p,
HINSTANCE  h 
)

Definition at line 37 of file atl30.c.

38{
39 INT i;
40 UINT size;
41
42 TRACE("(%p %p %p)\n", pM, p, h);
43
44 size = pM->cbSize;
45 switch (size)
46 {
47 case ATLVer1Size:
48 case sizeof(_ATL_MODULEW):
49#ifdef _WIN64
50 case sizeof(_ATL_MODULEW) + sizeof(void *):
51#endif
52 break;
53 default:
54 WARN("Unknown structure version (size %i)\n",size);
55 return E_INVALIDARG;
56 }
57
58 memset(pM,0,pM->cbSize);
59 pM->cbSize = size;
60 pM->m_hInst = h;
61 pM->m_hInstResource = h;
62 pM->m_hInstTypeLib = h;
63 pM->m_pObjMap = p;
64 pM->m_hHeap = GetProcessHeap();
65
69
70 /* call mains */
71 i = 0;
72 if (pM->m_pObjMap != NULL && size > ATLVer1Size)
73 {
74 while (pM->m_pObjMap[i].pclsid != NULL)
75 {
76 TRACE("Initializing object %i %p\n",i,p[i].pfnObjectMain);
77 if (p[i].pfnObjectMain)
78 p[i].pfnObjectMain(TRUE);
79 i++;
80 }
81 }
82
83 return S_OK;
84}
#define ATLVer1Size
Definition: atl30.c:35
#define TRUE
Definition: types.h:120
#define GetProcessHeap()
Definition: compat.h:736
GLsizeiptr size
Definition: glext.h:5919
GLfloat GLfloat p
Definition: glext.h:8902
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
unsigned int UINT
Definition: sysinfo.c:13
struct _ATL_MODULEW_TAG _ATL_MODULEW
#define S_OK
Definition: intsafe.h:52
#define memset(x, y, z)
Definition: compat.h:39
HINSTANCE m_hInstResource
Definition: atlbase.h:160
union _ATL_MODULEW_TAG::@4265 u
CRITICAL_SECTION m_csTypeInfoHolder
Definition: atlbase.h:167
HINSTANCE m_hInst
Definition: atlbase.h:159
_ATL_OBJMAP_ENTRYW * m_pObjMap
Definition: atlbase.h:162
CRITICAL_SECTION m_csObjMap
Definition: atlbase.h:171
HINSTANCE m_hInstTypeLib
Definition: atlbase.h:161
HANDLE m_hHeap
Definition: atlbase.h:164
const CLSID * pclsid
Definition: atlbase.h:86
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:687
int32_t INT
Definition: typedefs.h:58

Referenced by test_StructSize(), test_term(), test_winclassinfo(), and test_winmodule().

◆ AtlModuleLoadTypeLib()

HRESULT WINAPI AtlModuleLoadTypeLib ( _ATL_MODULEW pM,
LPCOLESTR  lpszIndex,
BSTR pbstrPath,
ITypeLib **  ppTypeLib 
)

Definition at line 99 of file atl30.c.

101{
102 TRACE("(%p, %s, %p, %p)\n", pM, debugstr_w(lpszIndex), pbstrPath, ppTypeLib);
103
104 if (!pM)
105 return E_INVALIDARG;
106
107 return AtlLoadTypeLib(pM->m_hInstTypeLib, lpszIndex, pbstrPath, ppTypeLib);
108}
HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib)
Definition: atl.c:337
#define debugstr_w
Definition: kernel32.h:32

◆ AtlModuleRegisterClassObjects()

HRESULT WINAPI AtlModuleRegisterClassObjects ( _ATL_MODULEW pM,
DWORD  dwClsContext,
DWORD  dwFlags 
)

Definition at line 131 of file atl30.c.

133{
135 int i=0;
136
137 TRACE("(%p %li %li)\n",pM, dwClsContext, dwFlags);
138
139 if (pM == NULL)
140 return E_INVALIDARG;
141
142 while ((obj = get_objmap_entry( pM, i++ )))
143 {
145 HRESULT rc;
146
147 TRACE("Registering object %i\n",i);
148 if (obj->pfnGetClassObject)
149 {
150 rc = obj->pfnGetClassObject(obj->pfnCreateInstance, &IID_IUnknown,
151 (LPVOID*)&pUnknown);
152 if (SUCCEEDED (rc) )
153 {
154 rc = CoRegisterClassObject(obj->pclsid, pUnknown, dwClsContext,
155 dwFlags, &obj->dwRegister);
156
157 if (FAILED (rc) )
158 WARN("Failed to register object %i: 0x%08lx\n", i, rc);
159
160 if (pUnknown)
161 IUnknown_Release(pUnknown);
162 }
163 }
164 }
165
166 return S_OK;
167}
HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid, IUnknown *object, DWORD clscontext, DWORD flags, DWORD *cookie)
Definition: combase.c:2970
_In_ PUNKNOWN pUnknown
Definition: drmk.h:76
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ AtlModuleRegisterServer()

HRESULT WINAPI AtlModuleRegisterServer ( _ATL_MODULEW pM,
BOOL  bRegTypeLib,
const CLSID clsid 
)

Definition at line 179 of file atl30.c.

180{
182 int i;
183 HRESULT hRes;
184
185 TRACE("%p %d %s\n", pM, bRegTypeLib, debugstr_guid(clsid));
186
187 if (pM == NULL)
188 return E_INVALIDARG;
189
190 for (i = 0; (obj = get_objmap_entry( pM, i )) != NULL; i++) /* register CLSIDs */
191 {
192 if (!clsid || IsEqualCLSID(obj->pclsid, clsid))
193 {
194 TRACE("Registering clsid %s\n", debugstr_guid(obj->pclsid));
195 hRes = obj->pfnUpdateRegistry(TRUE); /* register */
196 if (FAILED(hRes))
197 return hRes;
198
199 if(pM->cbSize > ATLVer1Size) {
200 const struct _ATL_CATMAP_ENTRY *catmap;
201
202 catmap = ((const _ATL_OBJMAP_ENTRYW*)obj)->pfnGetCategoryMap();
203 if(catmap) {
204 hRes = AtlRegisterClassCategoriesHelper(obj->pclsid, catmap, TRUE);
205 if(FAILED(hRes))
206 return hRes;
207 }
208 }
209 }
210 }
211
212 if (bRegTypeLib)
213 {
215 if (FAILED(hRes))
216 return hRes;
217 }
218
219 return S_OK;
220}
HRESULT WINAPI AtlRegisterClassCategoriesHelper(REFCLSID clsid, const struct _ATL_CATMAP_ENTRY *catmap, BOOL reg)
Definition: atl.c:747
HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE inst, const WCHAR *index)
Definition: atl.c:393
const CLSID * clsid
Definition: msctf.cpp:50
Definition: atlbase.h:248

◆ AtlModuleRegisterTypeLib()

HRESULT WINAPI AtlModuleRegisterTypeLib ( _ATL_MODULEW pm,
LPCOLESTR  lpszIndex 
)

Definition at line 263 of file atl30.c.

264{
265 TRACE("%p %s\n", pm, debugstr_w(lpszIndex));
266
267 if (!pm)
268 return E_INVALIDARG;
269
270 return AtlRegisterTypeLib(pm->m_hInstTypeLib, lpszIndex);
271}

◆ AtlModuleRegisterWndClassInfoA()

ATOM WINAPI AtlModuleRegisterWndClassInfoA ( _ATL_MODULEA pm,
_ATL_WNDCLASSINFOA wci,
WNDPROC pProc 
)

Definition at line 296 of file atl30.c.

297{
298 ATOM atom;
299
300 FIXME("%p %p %p semi-stub\n", pm, wci, pProc);
301
302 atom = wci->m_atom;
303 if (!atom)
304 {
305 WNDCLASSEXA wc;
306
307 TRACE("wci->m_wc.lpszClassName = %s\n", wci->m_wc.lpszClassName);
308
309 if (wci->m_lpszOrigName)
310 FIXME( "subclassing %s not implemented\n", debugstr_a(wci->m_lpszOrigName));
311
312 if (!wci->m_wc.lpszClassName)
313 {
314 sprintf(wci->m_szAutoName, "ATL:%p", wci);
315 TRACE("auto-generated class name %s\n", wci->m_szAutoName);
316 wci->m_wc.lpszClassName = wci->m_szAutoName;
317 }
318
319 atom = GetClassInfoExA(pm->m_hInst, wci->m_wc.lpszClassName, &wc);
320 if (!atom)
321 {
322 wci->m_wc.hInstance = pm->m_hInst;
323 wci->m_wc.hCursor = LoadCursorA( wci->m_bSystemCursor ? NULL : pm->m_hInst,
324 wci->m_lpszCursorID );
325 atom = RegisterClassExA(&wci->m_wc);
326 }
327 wci->pWndProc = wci->m_wc.lpfnWndProc;
328 wci->m_atom = atom;
329 }
330
331 if (wci->m_lpszOrigName) *pProc = wci->pWndProc;
332
333 TRACE("returning 0x%04x\n", atom);
334 return atom;
335}
#define FIXME(fmt,...)
Definition: precomp.h:53
WORD ATOM
Definition: dimm.idl:113
#define debugstr_a
Definition: kernel32.h:31
#define sprintf
Definition: sprintf.c:45
LPCSTR m_lpszOrigName
Definition: atlwin.h:27
CHAR m_szAutoName[sizeof("ATL:")+sizeof(void *) *2]
Definition: atlwin.h:32
WNDCLASSEXA m_wc
Definition: atlwin.h:26
LPCSTR m_lpszCursorID
Definition: atlwin.h:29
HINSTANCE hInstance
Definition: winuser.h:3314
HCURSOR hCursor
Definition: winuser.h:3316
WNDPROC lpfnWndProc
Definition: winuser.h:3311
LPCSTR lpszClassName
Definition: winuser.h:3319
BOOL WINAPI GetClassInfoExA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSEXA)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2459

◆ AtlModuleRegisterWndClassInfoW()

ATOM WINAPI AtlModuleRegisterWndClassInfoW ( _ATL_MODULEW pm,
_ATL_WNDCLASSINFOW wci,
WNDPROC pProc 
)

Definition at line 355 of file atl30.c.

356{
357 ATOM atom;
358
359 FIXME("%p %p %p semi-stub\n", pm, wci, pProc);
360
361 atom = wci->m_atom;
362 if (!atom)
363 {
364 WNDCLASSEXW wc;
365
366 TRACE("wci->m_wc.lpszClassName = %s\n", debugstr_w(wci->m_wc.lpszClassName));
367
368 if (wci->m_lpszOrigName)
369 FIXME( "subclassing %s not implemented\n", debugstr_w(wci->m_lpszOrigName));
370
371 if (!wci->m_wc.lpszClassName)
372 {
373 swprintf(wci->m_szAutoName, ARRAY_SIZE(wci->m_szAutoName), L"ATL:%p", wci);
374 TRACE("auto-generated class name %s\n", debugstr_w(wci->m_szAutoName));
375 wci->m_wc.lpszClassName = wci->m_szAutoName;
376 }
377
378 atom = GetClassInfoExW(pm->m_hInst, wci->m_wc.lpszClassName, &wc);
379 if (!atom)
380 {
381 wci->m_wc.hInstance = pm->m_hInst;
382 wci->m_wc.hCursor = LoadCursorW( wci->m_bSystemCursor ? NULL : pm->m_hInst,
383 wci->m_lpszCursorID );
384 atom = RegisterClassExW(&wci->m_wc);
385 }
386 wci->pWndProc = wci->m_wc.lpfnWndProc;
387 wci->m_atom = atom;
388 }
389
390 if (wci->m_lpszOrigName) *pProc = wci->pWndProc;
391
392 TRACE("returning 0x%04x\n", atom);
393 return atom;
394}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define swprintf
Definition: precomp.h:40
#define L(x)
Definition: resources.c:13
LPCWSTR m_lpszCursorID
Definition: atlwin.h:40
WCHAR m_szAutoName[sizeof("ATL:")+sizeof(void *) *2]
Definition: atlwin.h:43
WNDCLASSEXW m_wc
Definition: atlwin.h:37
LPCWSTR m_lpszOrigName
Definition: atlwin.h:38
LPCWSTR lpszClassName
Definition: winuser.h:3334
WNDPROC lpfnWndProc
Definition: winuser.h:3326
HCURSOR hCursor
Definition: winuser.h:3331
HINSTANCE hInstance
Definition: winuser.h:3329
BOOL WINAPI GetClassInfoExW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSEXW)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2474
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)

Referenced by test_winclassinfo().

◆ AtlModuleRevokeClassObjects()

HRESULT WINAPI AtlModuleRevokeClassObjects ( _ATL_MODULEW pm)

Definition at line 276 of file atl30.c.

277{
278 FIXME("%p\n", pm);
279 return E_FAIL;
280}
#define E_FAIL
Definition: ddrawi.h:102

◆ AtlModuleTerm()

HRESULT WINAPI AtlModuleTerm ( _ATL_MODULE pM)

Definition at line 110 of file atl30.c.

111{
112 _ATL_TERMFUNC_ELEM *iter, *tmp;
113
114 TRACE("(%p)\n", pM);
115
116 if (pM->cbSize > ATLVer1Size)
117 {
118 iter = pM->m_pTermFuncs;
119
120 while(iter) {
121 iter->pFunc(iter->dw);
122 tmp = iter;
123 iter = iter->pNext;
124 free(tmp);
125 }
126 }
127
128 return S_OK;
129}
#define free
Definition: debug_ros.c:5
UINT cbSize
Definition: atlbase.h:192
_ATL_TERMFUNC_ELEM * m_pTermFuncs
Definition: atlbase.h:194
struct _ATL_TERMFUNC_ELEM_TAG * pNext
Definition: atlbase.h:119
_ATL_TERMFUNC * pFunc
Definition: atlbase.h:117

Referenced by test_term().

◆ AtlModuleUnregisterServer()

HRESULT WINAPI AtlModuleUnregisterServer ( _ATL_MODULEW pm,
const CLSID clsid 
)

Definition at line 285 of file atl30.c.

286{
287 FIXME("%p %s\n", pm, debugstr_guid(clsid));
288 return E_FAIL;
289}

◆ AtlModuleUnregisterServerEx()

HRESULT WINAPI AtlModuleUnregisterServerEx ( _ATL_MODULEW pM,
BOOL  bUnRegTypeLib,
const CLSID pCLSID 
)

Definition at line 169 of file atl30.c.

170{
171 FIXME("(%p, %i, %p) stub\n", pM, bUnRegTypeLib, pCLSID);
172 return S_OK;
173}

◆ AtlModuleUpdateRegistryFromResourceD()

HRESULT WINAPI AtlModuleUpdateRegistryFromResourceD ( _ATL_MODULEW pM,
LPCOLESTR  lpszRes,
BOOL  bRegister,
struct _ATL_REGMAP_ENTRY pMapEntries,
IRegistrar pReg 
)

Definition at line 447 of file atl30.c.

449{
450 TRACE("(%p %s %d %p %p)\n", pM, debugstr_w(lpszRes), bRegister, pMapEntries, pReg);
451
452 return AtlUpdateRegistryFromResourceD(pM->m_hInst, lpszRes, bRegister, pMapEntries, pReg);
453}
HRESULT WINAPI AtlUpdateRegistryFromResourceD(HINSTANCE inst, LPCOLESTR res, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries, IRegistrar *pReg)
Definition: registrar.c:705

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  clsid,
REFIID  riid,
LPVOID ppvObject 
)

Definition at line 519 of file atl30.c.

520{
521 TRACE("(%s %s %p)\n", debugstr_guid(clsid), debugstr_guid(riid), ppvObject);
522
523 if(IsEqualGUID(&CLSID_Registrar, clsid))
524 return IClassFactory_QueryInterface( &RegistrarCF, riid, ppvObject );
525
526 FIXME("Not supported class %s\n", debugstr_guid(clsid));
528}
static IClassFactory RegistrarCF
Definition: atl30.c:514
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

◆ get_objmap_entry()

static _ATL_OBJMAP_ENTRYW_V1 * get_objmap_entry ( _ATL_MODULEW mod,
unsigned int  index 
)
static

Definition at line 86 of file atl30.c.

87{
89
90 if (mod->cbSize == ATLVer1Size)
91 ret = (_ATL_OBJMAP_ENTRYW_V1 *)mod->m_pObjMap + index;
92 else
93 ret = (_ATL_OBJMAP_ENTRYW_V1 *)(mod->m_pObjMap + index);
94
95 if (!ret->pclsid) ret = NULL;
96 return ret;
97}
std::map< E_MODULE, HMODULE > mod
Definition: LocaleTests.cpp:68
#define index(s, c)
Definition: various.h:29
GLuint index
Definition: glext.h:6031

Referenced by AtlModuleGetClassObject(), AtlModuleRegisterClassObjects(), and AtlModuleRegisterServer().

◆ RegistrarCF_AddRef()

static ULONG WINAPI RegistrarCF_AddRef ( IClassFactory iface)
static

Definition at line 468 of file atl30.c.

469{
470 return 2;
471}

◆ RegistrarCF_CreateInstance()

static HRESULT WINAPI RegistrarCF_CreateInstance ( IClassFactory iface,
LPUNKNOWN  pUnkOuter,
REFIID  riid,
void **  ppv 
)
static

Definition at line 478 of file atl30.c.

480{
481 IRegistrar *registrar;
483
484 TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
485
486 if(pUnkOuter) {
487 *ppv = NULL;
489 }
490
491 hres = AtlCreateRegistrar(&registrar);
492 if(FAILED(hres))
493 return hres;
494
495 hres = IRegistrar_QueryInterface(registrar, riid, ppv);
496 IRegistrar_Release(registrar);
497 return hres;
498}
HRESULT WINAPI AtlCreateRegistrar(IRegistrar **ret)
Definition: registrar.c:687
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ RegistrarCF_LockServer()

static HRESULT WINAPI RegistrarCF_LockServer ( IClassFactory iface,
BOOL  lock 
)
static

Definition at line 500 of file atl30.c.

501{
502 TRACE("(%p)->(%x)\n", iface, lock);
503 return S_OK;
504}
rwlock_t lock
Definition: tcpcore.h:0

◆ RegistrarCF_QueryInterface()

static HRESULT WINAPI RegistrarCF_QueryInterface ( IClassFactory iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 455 of file atl30.c.

456{
457 TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject);
458
460 *ppvObject = iface;
461 IClassFactory_AddRef( iface );
462 return S_OK;
463 }
464
465 return E_NOINTERFACE;
466}
const GUID IID_IClassFactory
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ RegistrarCF_Release()

static ULONG WINAPI RegistrarCF_Release ( IClassFactory iface)
static

Definition at line 473 of file atl30.c.

474{
475 return 1;
476}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( atl  )

Variable Documentation

◆ IRegistrarCFVtbl

const IClassFactoryVtbl IRegistrarCFVtbl
static
Initial value:
= {
}
static HRESULT WINAPI RegistrarCF_CreateInstance(IClassFactory *iface, LPUNKNOWN pUnkOuter, REFIID riid, void **ppv)
Definition: atl30.c:478
static ULONG WINAPI RegistrarCF_Release(IClassFactory *iface)
Definition: atl30.c:473
static ULONG WINAPI RegistrarCF_AddRef(IClassFactory *iface)
Definition: atl30.c:468
static HRESULT WINAPI RegistrarCF_LockServer(IClassFactory *iface, BOOL lock)
Definition: atl30.c:500
static HRESULT WINAPI RegistrarCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppvObject)
Definition: atl30.c:455

Definition at line 506 of file atl30.c.

◆ RegistrarCF

IClassFactory RegistrarCF = { &IRegistrarCFVtbl }
static

Definition at line 514 of file atl30.c.

Referenced by DllGetClassObject().