ReactOS  0.4.14-dev-593-g1793dcc
atl.c File Reference
#include "wine/atlbase.h"
#include "wine/atlcom.h"
#include "wine/debug.h"
#include "wine/heap.h"
Include dependency graph for atl.c:

Go to the source code of this file.

Macros

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

Typedefs

typedef unsigned char cpp_bool
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (atl)
 
HRESULT WINAPI AtlAdvise (IUnknown *pUnkCP, IUnknown *pUnk, const IID *iid, DWORD *pdw)
 
HRESULT WINAPI AtlUnadvise (IUnknown *pUnkCP, const IID *iid, DWORD dw)
 
HRESULT WINAPI AtlFreeMarshalStream (IStream *stm)
 
HRESULT WINAPI AtlMarshalPtrInProc (IUnknown *pUnk, const IID *iid, IStream **pstm)
 
HRESULT WINAPI AtlUnmarshalPtr (IStream *stm, const IID *iid, IUnknown **ppUnk)
 
HDC WINAPI AtlCreateTargetDC (HDC hdc, DVTARGETDEVICE *dv)
 
void WINAPI AtlHiMetricToPixel (const SIZEL *lpHiMetric, SIZEL *lpPix)
 
void WINAPI AtlPixelToHiMetric (const SIZEL *lpPix, SIZEL *lpHiMetric)
 
IUnknown *WINAPI AtlComPtrAssign (IUnknown **pp, IUnknown *p)
 
IUnknown *WINAPI AtlComQIPtrAssign (IUnknown **pp, IUnknown *p, REFIID riid)
 
HRESULT WINAPI AtlInternalQueryInterface (void *this, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
HRESULT WINAPI AtlIPersistStreamInit_Load (LPSTREAM pStm, ATL_PROPMAP_ENTRY *pMap, void *pThis, IUnknown *pUnk)
 
HRESULT WINAPI AtlIPersistStreamInit_Save (LPSTREAM pStm, BOOL fClearDirty, ATL_PROPMAP_ENTRY *pMap, void *pThis, IUnknown *pUnk)
 
HRESULT WINAPI AtlIPersistPropertyBag_Load (LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog, ATL_PROPMAP_ENTRY *pMap, void *pThis, IUnknown *pUnk)
 
HRESULT WINAPI AtlIPersistPropertyBag_Save (LPPROPERTYBAG pPropBag, BOOL fClearDirty, BOOL fSaveAll, ATL_PROPMAP_ENTRY *pMap, void *pThis, IUnknown *pUnk)
 
HRESULT WINAPI AtlModuleAddTermFunc (_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw)
 
HRESULT WINAPI AtlLoadTypeLib (HINSTANCE inst, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib)
 
HRESULT WINAPI AtlRegisterTypeLib (HINSTANCE inst, const WCHAR *index)
 
HRESULT WINAPI AtlRegisterClassCategoriesHelper (REFCLSID clsid, const struct _ATL_CATMAP_ENTRY *catmap, BOOL reg)
 
BOOL WINAPI AtlWaitWithMessageLoop (HANDLE handle)
 
static HRESULT get_default_source (ITypeLib *typelib, const CLSID *clsid, IID *iid)
 
HRESULT WINAPI AtlGetObjectSourceInterface (IUnknown *unk, GUID *libid, IID *iid, unsigned short *major, unsigned short *minor)
 
HRESULT WINAPI AtlSetPerUserRegistration (cpp_bool bEnable)
 
HRESULT WINAPI AtlGetPerUserRegistration (cpp_bool *pbEnabled)
 
DWORD WINAPI AtlGetVersion (void *pReserved)
 
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 

Variables

HINSTANCE atl_instance
 
static ICatRegistercatreg
 

Macro Definition Documentation

◆ ATLVer1Size

#define ATLVer1Size   FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer)

Definition at line 34 of file atl.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 20 of file atl.c.

Typedef Documentation

◆ cpp_bool

Definition at line 38 of file atl.c.

Function Documentation

◆ AtlAdvise()

HRESULT WINAPI AtlAdvise ( IUnknown pUnkCP,
IUnknown pUnk,
const IID iid,
DWORD pdw 
)

Definition at line 45 of file atl.c.

46 {
49  HRESULT hres;
50 
51  TRACE("%p %p %p %p\n", pUnkCP, pUnk, iid, pdw);
52 
53  if(!pUnkCP)
54  return E_INVALIDARG;
55 
56  hres = IUnknown_QueryInterface(pUnkCP, &IID_IConnectionPointContainer, (void**)&container);
57  if(FAILED(hres))
58  return hres;
59 
60  hres = IConnectionPointContainer_FindConnectionPoint(container, iid, &cp);
61  IConnectionPointContainer_Release(container);
62  if(FAILED(hres))
63  return hres;
64 
65  hres = IConnectionPoint_Advise(cp, pUnk, pdw);
66  IConnectionPoint_Release(cp);
67  return hres;
68 }
const GUID IID_IConnectionPointContainer
struct container container
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
POINT cp
Definition: magnifier.c:59
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

Referenced by CAddressEditBox::Init(), CExplorerBand::InitializeExplorerBand(), CSearchBar::OnInitDialog(), CBrandBand::SetSite(), CInternetToolbar::SetSite(), test_cp(), and CSearchBar::TrySubscribeToSearchEvents().

◆ AtlComPtrAssign()

IUnknown* WINAPI AtlComPtrAssign ( IUnknown **  pp,
IUnknown p 
)

Definition at line 176 of file atl.c.

177 {
178  TRACE("(%p %p)\n", pp, p);
179 
180  if (p) IUnknown_AddRef(p);
181  if (*pp) IUnknown_Release(*pp);
182  *pp = p;
183  return p;
184 }
#define pp
Definition: hlsl.yy.c:1208
#define TRACE(s)
Definition: solgame.cpp:4
GLfloat GLfloat p
Definition: glext.h:8902

◆ AtlComQIPtrAssign()

IUnknown* WINAPI AtlComQIPtrAssign ( IUnknown **  pp,
IUnknown p,
REFIID  riid 
)

Definition at line 189 of file atl.c.

190 {
191  IUnknown *new_p = NULL;
192 
193  TRACE("(%p %p %s)\n", pp, p, debugstr_guid(riid));
194 
195  if (p) IUnknown_QueryInterface(p, riid, (void **)&new_p);
196  if (*pp) IUnknown_Release(*pp);
197  *pp = new_p;
198  return new_p;
199 }
REFIID riid
Definition: precomp.h:44
#define pp
Definition: hlsl.yy.c:1208
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
GLfloat GLfloat p
Definition: glext.h:8902

◆ AtlCreateTargetDC()

HDC WINAPI AtlCreateTargetDC ( HDC  hdc,
DVTARGETDEVICE *  dv 
)

Definition at line 128 of file atl.c.

129 {
130  static const WCHAR displayW[] = {'d','i','s','p','l','a','y',0};
131  const WCHAR *driver = NULL, *device = NULL, *port = NULL;
132  DEVMODEW *devmode = NULL;
133 
134  TRACE( "(%p, %p)\n", hdc, dv );
135 
136  if (dv)
137  {
138  if (dv->tdDriverNameOffset) driver = (WCHAR *)((char *)dv + dv->tdDriverNameOffset);
139  if (dv->tdDeviceNameOffset) device = (WCHAR *)((char *)dv + dv->tdDeviceNameOffset);
140  if (dv->tdPortNameOffset) port = (WCHAR *)((char *)dv + dv->tdPortNameOffset);
141  if (dv->tdExtDevmodeOffset) devmode = (DEVMODEW *)((char *)dv + dv->tdExtDevmodeOffset);
142  }
143  else
144  {
145  if (hdc) return hdc;
146  driver = displayW;
147  }
148  return CreateDCW( driver, device, port, devmode );
149 }
Definition: devices.h:37
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const WCHAR displayW[]
Definition: icm.c:30
DEVMODEW devmode
HDC hdc
Definition: main.c:9
struct @1623::@1624 driver
HDC WINAPI CreateDCW(_In_opt_ LPCWSTR pszDriver, _In_opt_ LPCWSTR pszDevice, _In_opt_ LPCWSTR psz, _In_opt_ const DEVMODEW *pdmInit)
USHORT port
Definition: uri.c:228

◆ AtlFreeMarshalStream()

HRESULT WINAPI AtlFreeMarshalStream ( IStream stm)

Definition at line 101 of file atl.c.

102 {
103  FIXME("%p\n", stm);
104  return S_OK;
105 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ AtlGetObjectSourceInterface()

HRESULT WINAPI AtlGetObjectSourceInterface ( IUnknown unk,
GUID libid,
IID iid,
unsigned short major,
unsigned short minor 
)

Definition at line 888 of file atl.c.

889 {
892  ITypeLib *typelib;
893  IPersist *persist;
894  IDispatch *disp;
895  HRESULT hres;
896 
897  TRACE("(%p %p %p %p %p)\n", unk, libid, iid, major, minor);
898 
899  hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&disp);
900  if(FAILED(hres))
901  return hres;
902 
903  hres = IDispatch_GetTypeInfo(disp, 0, 0, &typeinfo);
904  IDispatch_Release(disp);
905  if(FAILED(hres))
906  return hres;
907 
908  hres = ITypeInfo_GetContainingTypeLib(typeinfo, &typelib, 0);
909  ITypeInfo_Release(typeinfo);
910  if(SUCCEEDED(hres)) {
911  TLIBATTR *attr;
912 
913  hres = ITypeLib_GetLibAttr(typelib, &attr);
914  if(SUCCEEDED(hres)) {
915  *libid = attr->guid;
916  *major = attr->wMajorVerNum;
917  *minor = attr->wMinorVerNum;
918  ITypeLib_ReleaseTLibAttr(typelib, attr);
919  }else {
920  ITypeLib_Release(typelib);
921  }
922  }
923  if(FAILED(hres))
924  return hres;
925 
926  hres = IUnknown_QueryInterface(unk, &IID_IProvideClassInfo2, (void**)&classinfo);
927  if(SUCCEEDED(hres)) {
928  hres = IProvideClassInfo2_GetGUID(classinfo, GUIDKIND_DEFAULT_SOURCE_DISP_IID, iid);
929  IProvideClassInfo2_Release(classinfo);
930  ITypeLib_Release(typelib);
931  return hres;
932  }
933 
934  hres = IUnknown_QueryInterface(unk, &IID_IPersist, (void**)&persist);
935  if(SUCCEEDED(hres)) {
936  CLSID clsid;
937 
938  hres = IPersist_GetClassID(persist, &clsid);
939  if(SUCCEEDED(hres))
941  IPersist_Release(persist);
942  }
943 
944  return hres;
945 }
disp
Definition: i386-dis.c:3181
const GUID IID_IPersist
Definition: proxy.cpp:14
static ITypeLib * typelib
Definition: apps.c:108
classinfo
Definition: clsfactory.c:43
const GUID IID_IProvideClassInfo2
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
Definition: cookie.c:201
const GUID IID_IDispatch
REFCLSID clsid
Definition: msctf.c:82
__u8 attr
Definition: mkdosfs.c:359
static ITypeInfo * typeinfo[last_tid]
Definition: apps.c:109
#define major(rdev)
Definition: propsheet.cpp:916
#define minor(rdev)
Definition: propsheet.cpp:917
static HRESULT get_default_source(ITypeLib *typelib, const CLSID *clsid, IID *iid)
Definition: atl.c:836
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by test_source_iface().

◆ AtlGetPerUserRegistration()

HRESULT WINAPI AtlGetPerUserRegistration ( cpp_bool pbEnabled)

Definition at line 961 of file atl.c.

962 {
963  FIXME("stub: returning false\n");
964  *pbEnabled = 0;
965  return S_OK;
966 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

Referenced by test_regcat().

◆ AtlGetVersion()

DWORD WINAPI AtlGetVersion ( void pReserved)

Definition at line 973 of file atl.c.

974 {
975  TRACE("version %04x (%p)\n", _ATL_VER, pReserved);
976  return _ATL_VER;
977 }
#define _ATL_VER
Definition: atlbase.h:36
#define TRACE(s)
Definition: solgame.cpp:4

◆ AtlHiMetricToPixel()

void WINAPI AtlHiMetricToPixel ( const SIZEL lpHiMetric,
SIZEL lpPix 
)

Definition at line 154 of file atl.c.

155 {
156  HDC dc = GetDC(NULL);
157  lpPix->cx = lpHiMetric->cx * GetDeviceCaps( dc, LOGPIXELSX ) / 100;
158  lpPix->cy = lpHiMetric->cy * GetDeviceCaps( dc, LOGPIXELSY ) / 100;
159  ReleaseDC( NULL, dc );
160 }
#define LOGPIXELSX
Definition: wingdi.h:717
HDC WINAPI GetDC(_In_opt_ HWND)
static HDC
Definition: imagelist.c:92
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
smooth NULL
Definition: ftsmooth.c:416
LONG cx
Definition: windef.h:334
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
static const WCHAR dc[]
#define LOGPIXELSY
Definition: wingdi.h:718
LONG cy
Definition: windef.h:335

◆ AtlInternalQueryInterface()

HRESULT WINAPI AtlInternalQueryInterface ( void this,
const _ATL_INTMAP_ENTRY pEntries,
REFIID  iid,
void **  ppvObject 
)

Definition at line 204 of file atl.c.

205 {
206  int i = 0;
207  HRESULT rc = E_NOINTERFACE;
208  TRACE("(%p, %p, %s, %p)\n",this, pEntries, debugstr_guid(iid), ppvObject);
209 
210  if (IsEqualGUID(iid,&IID_IUnknown))
211  {
212  TRACE("Returning IUnknown\n");
213  *ppvObject = ((LPSTR)this+pEntries[0].dw);
214  IUnknown_AddRef((IUnknown*)*ppvObject);
215  return S_OK;
216  }
217 
218  while (pEntries[i].pFunc != 0)
219  {
220  TRACE("Trying entry %i (%s %i %p)\n",i,debugstr_guid(pEntries[i].piid),
221  pEntries[i].dw, pEntries[i].pFunc);
222 
223  if (!pEntries[i].piid || IsEqualGUID(iid,pEntries[i].piid))
224  {
225  TRACE("MATCH\n");
226  if (pEntries[i].pFunc == (_ATL_CREATORARGFUNC*)1)
227  {
228  TRACE("Offset\n");
229  *ppvObject = ((LPSTR)this+pEntries[i].dw);
230  IUnknown_AddRef((IUnknown*)*ppvObject);
231  return S_OK;
232  }
233  else
234  {
235  TRACE("Function\n");
236  rc = pEntries[i].pFunc(this, iid, ppvObject, pEntries[i].dw);
237  if(rc==S_OK || pEntries[i].piid)
238  return rc;
239  }
240  }
241  i++;
242  }
243  TRACE("Done returning (0x%x)\n",rc);
244  return rc;
245 }
#define E_NOINTERFACE
Definition: winerror.h:2364
_ATL_CREATORARGFUNC * pFunc
Definition: atlbase.h:238
char * LPSTR
Definition: xmlstorage.h:182
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
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
REFIID LPVOID DWORD dw
Definition: atlbase.h:40
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

◆ AtlIPersistPropertyBag_Load()

HRESULT WINAPI AtlIPersistPropertyBag_Load ( LPPROPERTYBAG  pPropBag,
LPERRORLOG  pErrorLog,
ATL_PROPMAP_ENTRY pMap,
void pThis,
IUnknown pUnk 
)

Definition at line 273 of file atl.c.

276 {
277  FIXME("(%p, %p, %p, %p, %p)\n", pPropBag, pErrorLog, pMap, pThis, pUnk);
278 
279  return S_OK;
280 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AtlIPersistPropertyBag_Save()

HRESULT WINAPI AtlIPersistPropertyBag_Save ( LPPROPERTYBAG  pPropBag,
BOOL  fClearDirty,
BOOL  fSaveAll,
ATL_PROPMAP_ENTRY pMap,
void pThis,
IUnknown pUnk 
)

Definition at line 285 of file atl.c.

288 {
289  FIXME("(%p, %d, %d, %p, %p, %p)\n", pPropBag, fClearDirty, fSaveAll, pMap, pThis, pUnk);
290 
291  return S_OK;
292 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AtlIPersistStreamInit_Load()

HRESULT WINAPI AtlIPersistStreamInit_Load ( LPSTREAM  pStm,
ATL_PROPMAP_ENTRY pMap,
void pThis,
IUnknown pUnk 
)

Definition at line 250 of file atl.c.

252 {
253  FIXME("(%p, %p, %p, %p)\n", pStm, pMap, pThis, pUnk);
254 
255  return S_OK;
256 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AtlIPersistStreamInit_Save()

HRESULT WINAPI AtlIPersistStreamInit_Save ( LPSTREAM  pStm,
BOOL  fClearDirty,
ATL_PROPMAP_ENTRY pMap,
void pThis,
IUnknown pUnk 
)

Definition at line 261 of file atl.c.

264 {
265  FIXME("(%p, %d, %p, %p, %p)\n", pStm, fClearDirty, pMap, pThis, pUnk);
266 
267  return S_OK;
268 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AtlLoadTypeLib()

HRESULT WINAPI AtlLoadTypeLib ( HINSTANCE  inst,
LPCOLESTR  lpszIndex,
BSTR pbstrPath,
ITypeLib **  ppTypeLib 
)

Definition at line 341 of file atl.c.

343 {
344  size_t path_len, index_len;
345  ITypeLib *typelib = NULL;
346  WCHAR *path;
347  HRESULT hres;
348 
349  static const WCHAR tlb_extW[] = {'.','t','l','b',0};
350 
351  TRACE("(%p %s %p %p)\n", inst, debugstr_w(lpszIndex), pbstrPath, ppTypeLib);
352 
353  index_len = lpszIndex ? lstrlenW(lpszIndex) : 0;
354  path = heap_alloc((MAX_PATH+index_len)*sizeof(WCHAR) + sizeof(tlb_extW));
355  if(!path)
356  return E_OUTOFMEMORY;
357 
359  if(!path_len) {
360  heap_free(path);
362  }
363 
364  if(index_len)
365  memcpy(path+path_len, lpszIndex, (index_len+1)*sizeof(WCHAR));
366 
368  if(FAILED(hres)) {
369  WCHAR *ptr;
370 
371  for(ptr = path+path_len-1; ptr > path && *ptr != '\\' && *ptr != '.'; ptr--);
372  if(*ptr != '.')
373  ptr = path+path_len;
374  memcpy(ptr, tlb_extW, sizeof(tlb_extW));
376  }
377 
378  if(SUCCEEDED(hres)) {
379  *pbstrPath = SysAllocString(path);
380  if(!*pbstrPath) {
381  ITypeLib_Release(typelib);
383  }
384  }
385 
386  heap_free(path);
387  if(FAILED(hres))
388  return hres;
389 
390  *ppTypeLib = typelib;
391  return S_OK;
392 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:609
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
GLsizei const GLchar ** path
Definition: glext.h:7234
static ITypeLib * typelib
Definition: apps.c:108
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
Definition: typelib.c:458
#define lstrlenW
Definition: compat.h:415
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define debugstr_w
Definition: kernel32.h:32
static PVOID ptr
Definition: dispmode.c:27
smooth NULL
Definition: ftsmooth.c:416
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
static DWORD path_len
Definition: batch.c:31
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by AtlModuleLoadTypeLib(), AtlRegisterTypeLib(), and test_typelib().

◆ AtlMarshalPtrInProc()

HRESULT WINAPI AtlMarshalPtrInProc ( IUnknown pUnk,
const IID iid,
IStream **  pstm 
)

Definition at line 110 of file atl.c.

111 {
112  FIXME("%p %p %p\n", pUnk, iid, pstm);
113  return E_FAIL;
114 }
#define E_FAIL
Definition: ddrawi.h:102
#define FIXME(fmt,...)
Definition: debug.h:110
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

◆ AtlModuleAddTermFunc()

HRESULT WINAPI AtlModuleAddTermFunc ( _ATL_MODULE pM,
_ATL_TERMFUNC *  pFunc,
DWORD_PTR  dw 
)

Definition at line 297 of file atl.c.

298 {
299  _ATL_TERMFUNC_ELEM *termfunc_elem;
300 
301  TRACE("version %04x (%p %p %ld)\n", _ATL_VER, pM, pFunc, dw);
302 
303  if (_ATL_VER > _ATL_VER_30 || pM->cbSize > ATLVer1Size) {
304  termfunc_elem = HeapAlloc(GetProcessHeap(), 0, sizeof(_ATL_TERMFUNC_ELEM));
305  termfunc_elem->pFunc = pFunc;
306  termfunc_elem->dw = dw;
307  termfunc_elem->pNext = pM->m_pTermFuncs;
308 
309  pM->m_pTermFuncs = termfunc_elem;
310  }
311 
312  return S_OK;
313 }
#define ATLVer1Size
Definition: atl.c:34
#define _ATL_VER_30
Definition: atlbase.h:28
_ATL_TERMFUNC_ELEM * m_pTermFuncs
Definition: atlbase.h:194
_ATL_TERMFUNC * pFunc
Definition: atlbase.h:117
UINT cbSize
Definition: atlbase.h:192
#define _ATL_VER
Definition: atlbase.h:36
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
struct _ATL_TERMFUNC_ELEM_TAG * pNext
Definition: atlbase.h:119
REFIID LPVOID DWORD dw
Definition: atlbase.h:40
#define S_OK
Definition: intsafe.h:59

Referenced by test_term().

◆ AtlPixelToHiMetric()

void WINAPI AtlPixelToHiMetric ( const SIZEL lpPix,
SIZEL lpHiMetric 
)

Definition at line 165 of file atl.c.

166 {
167  HDC dc = GetDC(NULL);
168  lpHiMetric->cx = 100 * lpPix->cx / GetDeviceCaps( dc, LOGPIXELSX );
169  lpHiMetric->cy = 100 * lpPix->cy / GetDeviceCaps( dc, LOGPIXELSY );
170  ReleaseDC( NULL, dc );
171 }
#define LOGPIXELSX
Definition: wingdi.h:717
HDC WINAPI GetDC(_In_opt_ HWND)
static HDC
Definition: imagelist.c:92
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
smooth NULL
Definition: ftsmooth.c:416
LONG cx
Definition: windef.h:334
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
static const WCHAR dc[]
#define LOGPIXELSY
Definition: wingdi.h:718
LONG cy
Definition: windef.h:335

Referenced by IOCS_OnSize().

◆ AtlRegisterClassCategoriesHelper()

HRESULT WINAPI AtlRegisterClassCategoriesHelper ( REFCLSID  clsid,
const struct _ATL_CATMAP_ENTRY catmap,
BOOL  reg 
)

Definition at line 747 of file atl.c.

748 {
749  const struct _ATL_CATMAP_ENTRY *iter;
750  HRESULT hres;
751 
752  TRACE("(%s %p %x)\n", debugstr_guid(clsid), catmap, reg);
753 
754  if(!catmap)
755  return S_OK;
756 
757  if(!catreg) {
758  ICatRegister *new_catreg;
759 
760  hres = CoCreateInstance(&CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER,
761  &IID_ICatRegister, (void**)&new_catreg);
762  if(FAILED(hres))
763  return hres;
764 
765  if(InterlockedCompareExchangePointer((void**)&catreg, new_catreg, NULL))
766  ICatRegister_Release(new_catreg);
767  }
768 
769  for(iter = catmap; iter->iType != _ATL_CATMAP_ENTRY_END; iter++) {
770  CATID catid = *iter->pcatid; /* For stupid lack of const in ICatRegister declaration. */
771 
772  if(iter->iType == _ATL_CATMAP_ENTRY_IMPLEMENTED) {
773  if(reg)
774  hres = ICatRegister_RegisterClassImplCategories(catreg, clsid, 1, &catid);
775  else
776  hres = ICatRegister_UnRegisterClassImplCategories(catreg, clsid, 1, &catid);
777  }else {
778  if(reg)
779  hres = ICatRegister_RegisterClassReqCategories(catreg, clsid, 1, &catid);
780  else
781  hres = ICatRegister_UnRegisterClassReqCategories(catreg, clsid, 1, &catid);
782  }
783  if(FAILED(hres))
784  return hres;
785  }
786 
787  if(!reg) {
788  WCHAR reg_path[256] = {'C','L','S','I','D','\\'}, *ptr = reg_path+6;
789 
790  static const WCHAR implemented_catW[] =
791  {'I','m','p','l','e','m','e','n','t','e','d',' ','C','a','t','e','g','o','r','i','e','s',0};
792  static const WCHAR required_catW[] =
793  {'R','e','q','u','i','r','e','d',' ','C','a','t','e','g','o','r','i','e','s',0};
794 
795  ptr += StringFromGUID2(clsid, ptr, 64)-1;
796  *ptr++ = '\\';
797 
798  memcpy(ptr, implemented_catW, sizeof(implemented_catW));
799  RegDeleteKeyW(HKEY_CLASSES_ROOT, reg_path);
800 
801  memcpy(ptr, required_catW, sizeof(required_catW));
802  RegDeleteKeyW(HKEY_CLASSES_ROOT, reg_path);
803  }
804 
805  return S_OK;
806 }
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1237
const CATID * pcatid
Definition: atlbase.h:250
static ICatRegister * catreg
Definition: atl.c:40
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
static PVOID ptr
Definition: dispmode.c:27
smooth NULL
Definition: ftsmooth.c:416
GUID catid
Definition: msctf.idl:608
#define debugstr_guid
Definition: kernel32.h:35
int iType
Definition: atlbase.h:249
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
Definition: compobj.c:2434
REFCLSID clsid
Definition: msctf.c:82
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define S_OK
Definition: intsafe.h:59
#define _ATL_CATMAP_ENTRY_IMPLEMENTED
Definition: atlbase.h:254
static int reg
Definition: i386-dis.c:1275
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
#define _ATL_CATMAP_ENTRY_END
Definition: atlbase.h:253
Definition: atlbase.h:247

Referenced by AtlComModuleRegisterServer(), AtlModuleRegisterServer(), and test_regcat().

◆ AtlRegisterTypeLib()

HRESULT WINAPI AtlRegisterTypeLib ( HINSTANCE  inst,
const WCHAR index 
)

Definition at line 399 of file atl.c.

400 {
401  ITypeLib *typelib;
402  BSTR path;
403  HRESULT hres;
404 
405  TRACE("(%p %s)\n", inst, debugstr_w(index));
406 
407  hres = AtlLoadTypeLib(inst, index, &path, &typelib);
408  if(FAILED(hres))
409  return hres;
410 
411  hres = RegisterTypeLib(typelib, path, NULL); /* FIXME: pass help directory */
412  ITypeLib_Release(typelib);
414  return hres;
415 }
GLsizei const GLchar ** path
Definition: glext.h:7234
static ITypeLib * typelib
Definition: apps.c:108
OLECHAR * BSTR
Definition: compat.h:1942
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI RegisterTypeLib(ITypeLib *ptlib, const WCHAR *szFullPath, const WCHAR *szHelpDir)
Definition: typelib.c:656
GLuint index
Definition: glext.h:6031
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib)
Definition: atl.c:341
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271

Referenced by AtlComModuleRegisterServer(), AtlModuleRegisterServer(), and AtlModuleRegisterTypeLib().

◆ AtlSetPerUserRegistration()

HRESULT WINAPI AtlSetPerUserRegistration ( cpp_bool  bEnable)

Definition at line 952 of file atl.c.

953 {
954  FIXME("stub: bEnable: %d\n", bEnable);
955  return E_NOTIMPL;
956 }
#define FIXME(fmt,...)
Definition: debug.h:110
_In_ BOOL bEnable
Definition: winddi.h:3426
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ AtlUnadvise()

HRESULT WINAPI AtlUnadvise ( IUnknown pUnkCP,
const IID iid,
DWORD  dw 
)

Definition at line 73 of file atl.c.

74 {
77  HRESULT hres;
78 
79  TRACE("%p %p %d\n", pUnkCP, iid, dw);
80 
81  if(!pUnkCP)
82  return E_INVALIDARG;
83 
84  hres = IUnknown_QueryInterface(pUnkCP, &IID_IConnectionPointContainer, (void**)&container);
85  if(FAILED(hres))
86  return hres;
87 
88  hres = IConnectionPointContainer_FindConnectionPoint(container, iid, &cp);
89  IConnectionPointContainer_Release(container);
90  if(FAILED(hres))
91  return hres;
92 
93  hres = IConnectionPoint_Unadvise(cp, dw);
94  IConnectionPoint_Release(cp);
95  return hres;
96 }
const GUID IID_IConnectionPointContainer
struct container container
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
REFIID LPVOID DWORD dw
Definition: atlbase.h:40
POINT cp
Definition: magnifier.c:59

Referenced by CExplorerBand::DestroyExplorerBand(), CAddressEditBox::SetOwner(), CBrandBand::SetSite(), CInternetToolbar::SetSite(), and test_cp().

◆ AtlUnmarshalPtr()

HRESULT WINAPI AtlUnmarshalPtr ( IStream stm,
const IID iid,
IUnknown **  ppUnk 
)

Definition at line 119 of file atl.c.

120 {
121  FIXME("%p %p %p\n", stm, iid, ppUnk);
122  return E_FAIL;
123 }
#define E_FAIL
Definition: ddrawi.h:102
#define FIXME(fmt,...)
Definition: debug.h:110

◆ AtlWaitWithMessageLoop()

BOOL WINAPI AtlWaitWithMessageLoop ( HANDLE  handle)

Definition at line 811 of file atl.c.

812 {
813  MSG msg;
814  DWORD res;
815 
816  TRACE("(%p)\n", handle);
817 
818  while(1) {
820  switch(res) {
821  case WAIT_OBJECT_0:
822  return TRUE;
823  case WAIT_OBJECT_0+1:
824  if(GetMessageW(&msg, NULL, 0, 0) < 0)
825  return FALSE;
826 
829  break;
830  default:
831  return FALSE;
832  }
833  }
834 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define TRUE
Definition: types.h:120
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define WAIT_OBJECT_0
Definition: winbase.h:387
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
#define QS_ALLINPUT
Definition: winuser.h:874
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define msg(x)
Definition: auth_time.c:54
GLuint res
Definition: glext.h:9613
#define INFINITE
Definition: serial.h:102

◆ DllMain()

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

Definition at line 979 of file atl.c.

980 {
981  TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
982 
983  switch(fdwReason) {
984  case DLL_PROCESS_ATTACH:
985  atl_instance = hinstDLL;
986  DisableThreadLibraryCalls(hinstDLL);
987  break;
988  case DLL_PROCESS_DETACH:
989  if (lpvReserved) break;
990  if(catreg)
991  ICatRegister_Release(catreg);
992  }
993 
994  return TRUE;
995 }
#define TRUE
Definition: types.h:120
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
static IN DWORD IN LPVOID lpvReserved
static ICatRegister * catreg
Definition: atl.c:40
#define DLL_PROCESS_DETACH
Definition: compat.h:119
#define TRACE(s)
Definition: solgame.cpp:4
HINSTANCE atl_instance
Definition: atl.c:36

◆ get_default_source()

static HRESULT get_default_source ( ITypeLib typelib,
const CLSID clsid,
IID iid 
)
static

Definition at line 836 of file atl.c.

837 {
838  ITypeInfo *typeinfo, *src_typeinfo = NULL;
839  TYPEATTR *attr;
840  int type_flags;
841  unsigned i;
842  HRESULT hres;
843 
844  hres = ITypeLib_GetTypeInfoOfGuid(typelib, clsid, &typeinfo);
845  if(FAILED(hres))
846  return hres;
847 
848  hres = ITypeInfo_GetTypeAttr(typeinfo, &attr);
849  if(FAILED(hres)) {
850  ITypeInfo_Release(typeinfo);
851  return hres;
852  }
853 
854  for(i=0; i < attr->cImplTypes; i++) {
855  hres = ITypeInfo_GetImplTypeFlags(typeinfo, i, &type_flags);
856  if(SUCCEEDED(hres) && type_flags == (IMPLTYPEFLAG_FSOURCE|IMPLTYPEFLAG_FDEFAULT)) {
857  HREFTYPE ref;
858 
859  hres = ITypeInfo_GetRefTypeOfImplType(typeinfo, i, &ref);
860  if(SUCCEEDED(hres))
861  hres = ITypeInfo_GetRefTypeInfo(typeinfo, ref, &src_typeinfo);
862  break;
863  }
864  }
865 
866  ITypeInfo_ReleaseTypeAttr(typeinfo, attr);
867  ITypeInfo_Release(typeinfo);
868  if(FAILED(hres))
869  return hres;
870 
871  if(!src_typeinfo) {
872  *iid = IID_NULL;
873  return S_OK;
874  }
875 
876  hres = ITypeInfo_GetTypeAttr(src_typeinfo, &attr);
877  if(SUCCEEDED(hres)) {
878  *iid = attr->guid;
879  ITypeInfo_ReleaseTypeAttr(src_typeinfo, attr);
880  }
881  ITypeInfo_Release(src_typeinfo);
882  return hres;
883 }
static ITypeLib * typelib
Definition: apps.c:108
Definition: send.c:47
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
GLenum GLint ref
Definition: glext.h:6028
smooth NULL
Definition: ftsmooth.c:416
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
Definition: cookie.c:201
REFCLSID clsid
Definition: msctf.c:82
__u8 attr
Definition: mkdosfs.c:359
static ITypeInfo * typeinfo[last_tid]
Definition: apps.c:109
#define IID_NULL
Definition: guiddef.h:98
#define S_OK
Definition: intsafe.h:59
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by AtlGetObjectSourceInterface().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( atl  )

Variable Documentation

◆ atl_instance

HINSTANCE atl_instance

Definition at line 36 of file atl.c.

Referenced by DllMain(), DllRegisterServer(), and DllUnregisterServer().

◆ catreg

ICatRegister* catreg
static