39 #include "oleaut32_oaidl.h" 80 0, 0, { (
DWORD_PTR)(__FILE__
": bstr_cache") }
96 #define BUCKET_SIZE 16 97 #define BUCKET_BUFFER_SIZE 6 105 #define ARENA_INUSE_FILLER 0x55 106 #define ARENA_TAIL_FILLER 0xab 107 #define ARENA_FREE_FILLER 0xfeeefeee 283 alloc_size = IMalloc_GetSize(
malloc, bstr);
284 if (alloc_size == ~0
UL)
297 WARN_(heap)(
"String already is in cache!\n");
357 bstr->u.str[
len] = 0;
394 if (!bstr)
return FALSE;
397 bstr->
size = newbytelen;
533 DWORD rot_flags = ROTFLAGS_REGISTRATIONKEEPSALIVE;
546 ret = IRunningObjectTable_Register(runobtable,rot_flags,punk,
moniker,pdwRegister);
547 IRunningObjectTable_Release(runobtable);
572 ret = IRunningObjectTable_Revoke(runobtable,xregister);
574 IRunningObjectTable_Release(runobtable);
608 ret = IRunningObjectTable_GetObject(runobtable,
moniker,ppunk);
609 IRunningObjectTable_Release(runobtable);
667 FIXME(
"Version value not known yet. Please investigate it !\n");
697 TRACE(
"(%08x, %p, %p)\n", clr, hpal, pColorRef);
702 if (pColorRef ==
NULL)
703 pColorRef = &colorref;
802 ACTCTX_SECTION_KEYED_DATA
data;
820 ERR(
"need larger module buffer, %u\n", tlib->
name_len);
832 char tlguid[200], typelibkey[300], interfacekey[300], ver[100], tlfn[260];
838 sprintf( interfacekey,
"Interface\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\Typelib",
839 iid->Data1, iid->Data2, iid->Data3,
840 iid->Data4[0], iid->Data4[1], iid->Data4[2], iid->Data4[3],
841 iid->Data4[4], iid->Data4[5], iid->Data4[6], iid->Data4[7]
851 ERR(
"No %s key found.\n", interfacekey);
855 tlguidlen =
sizeof(tlguid);
858 ERR(
"Getting typelib guid failed.\n");
863 verlen =
sizeof(ver);
866 ERR(
"Could not get version value?\n");
874 sprintf(typelibkey,
"Typelib\\%s\\%s\\0\\win%u", tlguid, ver,
sizeof(
void *) == 8 ? 64 : 32);
876 snprintf(typelibkey,
sizeof(typelibkey),
"Typelib\\%s\\%s\\0\\win%u", tlguid, ver,
sizeof(
void *) == 8 ? 64 : 32);
878 tlfnlen =
sizeof(tlfn);
882 sprintf(typelibkey,
"Typelib\\%s\\%s\\0\\win32", tlguid, ver);
883 tlfnlen =
sizeof(tlfn);
887 ERR(
"Could not get typelib fn?\n");
915 ERR(
"Failed to load typelib for %s, but it should be there.\n",
debugstr_guid(iid));
959 IPSFactoryBuffer_Release(
factory);
989 ERR(
"Failed to create proxy, hr %#x.\n",
hr);
1005 IPSFactoryBuffer_Release(
factory);
1035 ERR(
"Failed to create proxy, hr %#x.\n",
hr);
1111 static const WCHAR oanocacheW[] = {
'o',
'a',
'n',
'o',
'c',
'a',
'c',
'h',
'e',0};
1116 return OLEAUTPS_DllMain( hInstDll, fdwReason,
lpvReserved );
1124 return OLEAUTPS_DllRegisterServer();
1132 return OLEAUTPS_DllUnregisterServer();
1140 FIXME(
"(%p,%p), partially implemented.\n",hinstExe,
hIcon);
1150 static const WCHAR ar_month1W[] = {0x645,0x62d,0x631,0x645,0};
1151 static const WCHAR ar_month2W[] = {0x635,0x641,0x631,0};
1152 static const WCHAR ar_month3W[] = {0x631,0x628,0x64a,0x639,
' ',0x627,0x644,0x627,0x648,0x644,0};
1153 static const WCHAR ar_month4W[] = {0x631,0x628,0x64a,0x639,
' ',0x627,0x644,0x62b,0x627,0x646,0x64a,0};
1154 static const WCHAR ar_month5W[] = {0x62c,0x645,0x627,0x62f,0x649,
' ',0x627,0x644,0x627,0x648,0x644,0x649,0};
1155 static const WCHAR ar_month6W[] = {0x62c,0x645,0x627,0x62f,0x649,
' ',0x627,0x644,0x62b,0x627,0x646,0x64a,0x629,0};
1156 static const WCHAR ar_month7W[] = {0x631,0x62c,0x628,0};
1157 static const WCHAR ar_month8W[] = {0x634,0x639,0x628,0x627,0x646,0};
1158 static const WCHAR ar_month9W[] = {0x631,0x645,0x636,0x627,0x646,0};
1159 static const WCHAR ar_month10W[] = {0x634,0x648,0x627,0x643,0};
1160 static const WCHAR ar_month11W[] = {0x630,0x648,
' ',0x627,0x644,0x642,0x639,0x62f,0x629,0};
1161 static const WCHAR ar_month12W[] = {0x630,0x648,
' ',0x627,0x644,0x62d,0x62c,0x629,0};
1163 static const WCHAR *arabic_hijri[] =
1180 static const WCHAR pl_month1W[] = {
's',
't',
'y',
'c',
'z',
'n',
'i',
'a',0};
1181 static const WCHAR pl_month2W[] = {
'l',
'u',
't',
'e',
'g',
'o',0};
1182 static const WCHAR pl_month3W[] = {
'm',
'a',
'r',
'c',
'a',0};
1183 static const WCHAR pl_month4W[] = {
'k',
'w',
'i',
'e',
't',
'n',
'i',
'a',0};
1184 static const WCHAR pl_month5W[] = {
'm',
'a',
'j',
'a',0};
1185 static const WCHAR pl_month6W[] = {
'c',
'z',
'e',
'r',
'w',
'c',
'a',0};
1186 static const WCHAR pl_month7W[] = {
'l',
'i',
'p',
'c',
'a',0};
1187 static const WCHAR pl_month8W[] = {
's',
'i',
'e',
'r',
'p',
'n',
'i',
'a',0};
1188 static const WCHAR pl_month9W[] = {
'w',
'r',
'z',
'e',0x15b,
'n',
'i',
'a',0};
1189 static const WCHAR pl_month10W[] = {
'p',
'a',0x17a,
'd',
'z',
'i',
'e',
'r',
'n',
'i',
'k',
'a',0};
1190 static const WCHAR pl_month11W[] = {
'l',
'i',
's',
't',
'o',
'p',
'a',
'd',
'a',0};
1191 static const WCHAR pl_month12W[] = {
'g',
'r',
'u',
'd',
'n',
'i',
'a',0};
1193 static const WCHAR *polish_genitive_names[] =
1210 static const WCHAR ru_month1W[] = {0x44f,0x43d,0x432,0x430,0x440,0x44f,0};
1211 static const WCHAR ru_month2W[] = {0x444,0x435,0x432,0x440,0x430,0x43b,0x44f,0};
1212 static const WCHAR ru_month3W[] = {0x43c,0x430,0x440,0x442,0x430,0};
1213 static const WCHAR ru_month4W[] = {0x430,0x43f,0x440,0x435,0x43b,0x44f,0};
1214 static const WCHAR ru_month5W[] = {0x43c,0x430,0x44f,0};
1215 static const WCHAR ru_month6W[] = {0x438,0x44e,0x43d,0x44f,0};
1216 static const WCHAR ru_month7W[] = {0x438,0x44e,0x43b,0x44f,0};
1217 static const WCHAR ru_month8W[] = {0x430,0x432,0x433,0x443,0x441,0x442,0x430,0};
1218 static const WCHAR ru_month9W[] = {0x441,0x435,0x43d,0x442,0x44f,0x431,0x440,0x44f,0};
1219 static const WCHAR ru_month10W[] = {0x43e,0x43a,0x442,0x44f,0x431,0x440,0x44f,0};
1220 static const WCHAR ru_month11W[] = {0x43d,0x43e,0x44f,0x431,0x440,0x44f,0};
1221 static const WCHAR ru_month12W[] = {0x434,0x435,0x43a,0x430,0x431,0x440,0x44f,0};
1223 static const WCHAR *russian_genitive_names[] =
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 * u
INT WINAPI SysReAllocString(LPBSTR old, LPCOLESTR str)
static bstr_cache_entry_t bstr_cache[0x10000/BUCKET_SIZE]
static bstr_cache_entry_t * get_cache_entry_from_alloc_size(SIZE_T alloc_size)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
#define ACTIVEOBJECT_WEAK
#define memmove(s1, s2, n)
UINT WINAPI GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT cEntries, LPPALETTEENTRY ppe)
#define ARENA_INUSE_FILLER
static CRITICAL_SECTION cs_bstr_cache
static rfbScreenInfoPtr server
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
interface IRunningObjectTable * LPRUNNINGOBJECTTABLE
static bstr_t * bstr_from_str(BSTR str)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
static IMalloc * get_malloc(void)
static bstr_cache_entry_t * get_cache_entry_from_idx(unsigned cache_idx)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
static HRESULT WINAPI dispatch_typelib_ps_CreateProxy(IPSFactoryBuffer *iface, IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy, void **out)
#define ARENA_FREE_FILLER
static ITypeLib * typelib
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
#define DLL_PROCESS_ATTACH
static size_t bstr_alloc_size(size_t size)
UINT WINAPI SysStringByteLen(BSTR str)
static bstr_t * alloc_bstr(size_t size)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static const WCHAR _delimiter[]
static CRITICAL_SECTION_DEBUG cs_bstr_cache_dbg
void _get_STDFONT_CF(LPVOID *)
DWORD WINAPI GetSysColor(_In_ int)
DWORD WINAPI GetVersion(VOID)
static IN DWORD IN LPVOID lpvReserved
HRESULT WINAPI DllRegisterServer(void)
HRESULT WINAPI DECLSPEC_HOTPATCH RegisterActiveObject(LPUNKNOWN punk, REFCLSID rcid, DWORD dwFlags, LPDWORD pdwRegister)
static HRESULT dispatch_create_stub(IUnknown *server, IRpcStubBuffer **stub)
#define sprintf(buf, format,...)
GLenum GLuint GLenum GLsizei const GLchar * buf
static BOOL actctx_get_typelib_module(REFIID iid, WCHAR *module, DWORD len)
HRESULT WINAPI CoGetMalloc(DWORD context, IMalloc **imalloc)
static HRESULT reg_get_typelib_module(REFIID iid, WCHAR *module, DWORD len)
HRESULT WINAPI GetAltMonthNames(LCID lcid, LPOLESTR **str)
static bstr_cache_entry_t * get_cache_entry(size_t size)
HRESULT WINAPI CreateProxyFromTypeInfo(ITypeInfo *typeinfo, IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy_buffer, void **out)
HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, IMoniker **ppmk)
WINE_DECLARE_DEBUG_CHANNEL(heap)
ULONG WINAPI OaBuildVersion(void)
static HRESULT WINAPI dispatch_typelib_ps_QueryInterface(IPSFactoryBuffer *iface, REFIID iid, void **out)
HRESULT WINAPI OLEAUTPS_DllGetClassObject(REFCLSID, REFIID, LPVOID *)
BSTR WINAPI SysAllocString(LPCOLESTR str)
void _get_STDPIC_CF(LPVOID *)
WINE_DEFAULT_DEBUG_CHANNEL(ole)
static IPSFactoryBuffer dispatch_typelib_ps
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define DECLSPEC_HOTPATCH
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
static ULONG WINAPI dispatch_typelib_ps_AddRef(IPSFactoryBuffer *iface)
BOOL WINAPI IsWow64Process(IN HANDLE hProcess, OUT PBOOL Wow64Process)
#define ARENA_TAIL_FILLER
GLboolean GLboolean GLboolean b
static BOOL bstr_cache_enabled
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
HRESULT WINAPI DECLSPEC_HOTPATCH GetActiveObject(REFCLSID rcid, LPVOID preserved, LPUNKNOWN *ppunk)
static ITypeInfo * typeinfo[last_tid]
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define memcpy(s1, s2, n)
#define LANGIDFROMLCID(l)
HRESULT WINAPI DllCanUnloadNow(void)
#define GetCurrentProcess()
UINT WINAPI SysStringLen(BSTR str)
LIST_ENTRY ProcessLocksList
interface IMoniker * LPMONIKER
HRESULT WINAPI DllUnregisterServer(void)
int WINAPI SysReAllocStringLen(BSTR *old, const OLECHAR *str, unsigned int len)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
static HRESULT get_typeinfo_for_iid(REFIID iid, ITypeInfo **typeinfo)
HCURSOR WINAPI OleIconToCursor(HINSTANCE hinstExe, HICON hIcon)
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
static HRESULT dispatch_create_proxy(IUnknown *outer, IRpcProxyBuffer **proxy, void **out)
#define PALETTERGB(r, g, b)
static const WCHAR * pdelimiter
#define FIELD_OFFSET(t, f)
void WINAPI SetOaNoCache(void)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot)
#define MultiByteToWideChar
#define BUCKET_BUFFER_SIZE
static HRESULT WINAPI dispatch_typelib_ps_CreateStub(IPSFactoryBuffer *iface, REFIID iid, IUnknown *server, IRpcStubBuffer **stub)
static ClassFactoryImpl factory
LPVOID WINAPI CoTaskMemRealloc(LPVOID pvOld, SIZE_T size)
#define HKEY_CLASSES_ROOT
const GUID CLSID_StdPicture
GLuint GLuint GLsizei GLenum type
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
BOOL WINAPI FindActCtxSectionGuid(DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, const GUID *lpSearchGuid, PACTCTX_SECTION_KEYED_DATA pInfo)
#define GetEnvironmentVariableW(x, y, z)
const GUID IID_IClassFactory
HRESULT WINAPI DECLSPEC_HOTPATCH RevokeActiveObject(DWORD xregister, LPVOID reserved)
HRESULT WINAPI OleTranslateColor(OLE_COLOR clr, HPALETTE hpal, COLORREF *pColorRef)
#define IsEqualCLSID(rclsid1, rclsid2)
static const IPSFactoryBufferVtbl dispatch_typelib_ps_vtbl
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define RegCloseKey(hKey)
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI CreateStubFromTypeInfo(ITypeInfo *typeinfo, REFIID iid, IUnknown *server, IRpcStubBuffer **stub_buffer)
static ULONG WINAPI dispatch_typelib_ps_Release(IPSFactoryBuffer *iface)