ReactOS  0.4.14-dev-554-g2f8d847
msctf.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include "wine/debug.h"
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "shlwapi.h"
#include "shlguid.h"
#include "comcat.h"
#include "olectl.h"
#include "rpcproxy.h"
#include "msctf.h"
#include "inputscope.h"
#include "msctf_internal.h"
Include dependency graph for msctf.c:

Go to the source code of this file.

Classes

struct  CookieInternal
 
struct  ActivatedTextService
 
struct  AtsEntry
 
struct  tagClassFactory
 

Macros

#define COBJMACROS
 

Typedefs

typedef HRESULT(* LPFNCONSTRUCTOR) (IUnknown *pUnkOuter, IUnknown **ppvOut)
 
typedef struct tagClassFactory ClassFactory
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msctf)
 
static ClassFactoryimpl_from_IClassFactory (IClassFactory *iface)
 
static void ClassFactory_Destructor (ClassFactory *This)
 
static HRESULT WINAPI ClassFactory_QueryInterface (IClassFactory *iface, REFIID riid, LPVOID *ppvOut)
 
static ULONG WINAPI ClassFactory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI ClassFactory_Release (IClassFactory *iface)
 
static HRESULT WINAPI ClassFactory_CreateInstance (IClassFactory *iface, IUnknown *punkOuter, REFIID iid, LPVOID *ppvOut)
 
static HRESULT WINAPI ClassFactory_LockServer (IClassFactory *iface, BOOL fLock)
 
static HRESULT ClassFactory_Constructor (LPFNCONSTRUCTOR ctor, LPVOID *ppvOut)
 
DWORD generate_Cookie (DWORD magic, LPVOID data)
 
DWORD get_Cookie_magic (DWORD id)
 
LPVOID get_Cookie_data (DWORD id)
 
LPVOID remove_Cookie (DWORD id)
 
DWORD enumerate_Cookie (DWORD magic, DWORD *index)
 
HRESULT advise_sink (struct list *sink_list, REFIID riid, DWORD cookie_magic, IUnknown *unk, DWORD *cookie)
 
static void free_sink (Sink *sink)
 
HRESULT unadvise_sink (DWORD cookie)
 
void free_sinks (struct list *sink_list)
 
static HRESULT activate_given_ts (ActivatedTextService *actsvr, ITfThreadMgrEx *tm)
 
static HRESULT deactivate_given_ts (ActivatedTextService *actsvr)
 
static void deactivate_remove_conflicting_ts (REFCLSID catid)
 
HRESULT add_active_textservice (TF_LANGUAGEPROFILE *lp)
 
BOOL get_active_textservice (REFCLSID rclsid, TF_LANGUAGEPROFILE *profile)
 
HRESULT activate_textservices (ITfThreadMgrEx *tm)
 
HRESULT deactivate_textservices (void)
 
CLSID get_textservice_clsid (TfClientId tid)
 
HRESULT get_textservice_sink (TfClientId tid, REFCLSID iid, IUnknown **sink)
 
HRESULT set_textservice_sink (TfClientId tid, REFCLSID iid, IUnknown *sink)
 
BOOL WINAPI DllMain (HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad)
 
HRESULT WINAPI DllCanUnloadNow (void)
 
HRESULT WINAPI DllGetClassObject (REFCLSID clsid, REFIID iid, LPVOID *ppvOut)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 
HRESULT WINAPI TF_CreateThreadMgr (ITfThreadMgr **pptim)
 
HRESULT WINAPI TF_GetThreadMgr (ITfThreadMgr **pptim)
 
HRESULT WINAPI SetInputScope (HWND hwnd, InputScope inputscope)
 
HRESULT WINAPI SetInputScopes (HWND hwnd, const InputScope *pInputScopes, UINT cInputScopes, WCHAR **ppszPhraseList, UINT cPhrases, WCHAR *pszRegExp, WCHAR *pszSRGS)
 
HRESULT WINAPI TF_CreateInputProcessorProfiles (ITfInputProcessorProfiles **ppipr)
 
HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist (void)
 
HRESULT WINAPI TF_CreateLangBarMgr (ITfLangBarMgr **pppbm)
 
HRESULT WINAPI TF_CreateLangBarItemMgr (ITfLangBarItemMgr **pplbim)
 
HRESULT WINAPI TF_InitMlngInfo (void)
 

Variables

static HINSTANCE MSCTF_hinstance
 
static CookieInternalcookies
 
static UINT id_last
 
static UINT array_size
 
static struct list AtsList = LIST_INIT(AtsList)
 
static UINT activated = 0
 
DWORD tlsIndex = 0
 
TfClientId processId = 0
 
ITfCompartmentMgrglobalCompartmentMgr = NULL
 
const WCHAR szwSystemTIPKey [] = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\','C','T','F','\\','T','I','P',0}
 
const WCHAR szwSystemCTFKey [] = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\','C','T','F',0}
 
struct {
   REFCLSID   clsid
 
   LPFNCONSTRUCTOR   ctor
 
ClassesTable []
 
static const IClassFactoryVtbl ClassFactoryVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file msctf.c.

Typedef Documentation

◆ ClassFactory

◆ LPFNCONSTRUCTOR

typedef HRESULT(* LPFNCONSTRUCTOR) (IUnknown *pUnkOuter, IUnknown **ppvOut)

Definition at line 79 of file msctf.c.

Function Documentation

◆ activate_given_ts()

static HRESULT activate_given_ts ( ActivatedTextService actsvr,
ITfThreadMgrEx tm 
)
static

Definition at line 336 of file msctf.c.

337 {
338  HRESULT hr;
339 
340  /* Already Active? */
341  if (actsvr->pITfTextInputProcessor)
342  return S_OK;
343 
344  hr = CoCreateInstance (&actsvr->LanguageProfile.clsid, NULL, CLSCTX_INPROC_SERVER,
345  &IID_ITfTextInputProcessor, (void**)&actsvr->pITfTextInputProcessor);
346  if (FAILED(hr)) return hr;
347 
348  hr = ITfTextInputProcessor_Activate(actsvr->pITfTextInputProcessor, (ITfThreadMgr *)tm, actsvr->tid);
349  if (FAILED(hr))
350  {
351  ITfTextInputProcessor_Release(actsvr->pITfTextInputProcessor);
352  actsvr->pITfTextInputProcessor = NULL;
353  return hr;
354  }
355 
356  actsvr->pITfThreadMgrEx = tm;
357  ITfThreadMgrEx_AddRef(tm);
358  return hr;
359 }
HRESULT hr
Definition: shlfolder.c:183
ITfThreadMgrEx * pITfThreadMgrEx
Definition: msctf.c:54
smooth NULL
Definition: ftsmooth.c:416
TfClientId tid
Definition: msctf.c:56
LONG HRESULT
Definition: typedefs.h:77
Definition: time.h:76
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
ITfTextInputProcessor * pITfTextInputProcessor
Definition: msctf.c:53
TF_LANGUAGEPROFILE LanguageProfile
Definition: msctf.c:52

Referenced by activate_textservices(), and add_active_textservice().

◆ activate_textservices()

HRESULT activate_textservices ( ITfThreadMgrEx tm)

Definition at line 475 of file msctf.c.

476 {
477  HRESULT hr = S_OK;
478  AtsEntry *ats;
479 
480  activated ++;
481  if (activated > 1)
482  return S_OK;
483 
485  {
486  hr = activate_given_ts(ats->ats, tm);
487  if (FAILED(hr))
488  FIXME("Failed to activate text service\n");
489  }
490  return hr;
491 }
static UINT activated
Definition: msctf.c:70
HRESULT hr
Definition: shlfolder.c:183
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static HRESULT activate_given_ts(ActivatedTextService *actsvr, ITfThreadMgrEx *tm)
Definition: msctf.c:336
#define FIXME(fmt,...)
Definition: debug.h:110
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
LONG HRESULT
Definition: typedefs.h:77
uint32_t entry
Definition: isohybrid.c:63
Definition: time.h:76
Definition: msctf.c:59
#define S_OK
Definition: intsafe.h:59

Referenced by ThreadMgr_ActivateEx().

◆ add_active_textservice()

HRESULT add_active_textservice ( TF_LANGUAGEPROFILE lp)

Definition at line 395 of file msctf.c.

396 {
397  ActivatedTextService *actsvr;
398  ITfCategoryMgr *catmgr;
399  AtsEntry *entry;
401  ITfClientId *clientid;
402 
403  if (!tm) return E_UNEXPECTED;
404 
405  actsvr = HeapAlloc(GetProcessHeap(),0,sizeof(ActivatedTextService));
406  if (!actsvr) return E_OUTOFMEMORY;
407 
408  ITfThreadMgrEx_QueryInterface(tm, &IID_ITfClientId, (void **)&clientid);
409  ITfClientId_GetClientId(clientid, &lp->clsid, &actsvr->tid);
410  ITfClientId_Release(clientid);
411 
412  if (!actsvr->tid)
413  {
414  HeapFree(GetProcessHeap(),0,actsvr);
415  return E_OUTOFMEMORY;
416  }
417 
418  actsvr->pITfTextInputProcessor = NULL;
419  actsvr->LanguageProfile = *lp;
420  actsvr->pITfKeyEventSink = NULL;
421 
422  /* get TIP category */
424  {
426 
427  ITfCategoryMgr_FindClosestCategory(catmgr,
428  &actsvr->LanguageProfile.clsid, &actsvr->LanguageProfile.catid,
429  list, 3);
430 
431  ITfCategoryMgr_Release(catmgr);
432  }
433  else
434  {
435  ERR("CategoryMgr construction failed\n");
436  actsvr->LanguageProfile.catid = GUID_NULL;
437  }
438 
439  if (!IsEqualGUID(&actsvr->LanguageProfile.catid,&GUID_NULL))
441 
442  if (activated > 0)
443  activate_given_ts(actsvr, tm);
444 
445  entry = HeapAlloc(GetProcessHeap(),0,sizeof(AtsEntry));
446 
447  if (!entry)
448  {
449  HeapFree(GetProcessHeap(),0,actsvr);
450  return E_OUTOFMEMORY;
451  }
452 
453  entry->ats = actsvr;
454  list_add_head(&AtsList, &entry->entry);
455 
456  return S_OK;
457 }
static UINT activated
Definition: msctf.c:70
static void deactivate_remove_conflicting_ts(REFCLSID catid)
Definition: msctf.c:377
EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH
Definition: msctf.idl:63
__WINE_SERVER_LIST_INLINE void list_add_head(struct list *list, struct list *elem)
Definition: list.h:96
DWORD tlsIndex
Definition: msctf.c:72
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static HRESULT activate_given_ts(ActivatedTextService *actsvr, ITfThreadMgrEx *tm)
Definition: msctf.c:336
EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING
Definition: msctf.idl:64
smooth NULL
Definition: ftsmooth.c:416
static struct list AtsList
Definition: msctf.c:69
HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
Definition: categorymgr.c:413
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
TfClientId tid
Definition: msctf.c:56
ITfKeyEventSink * pITfKeyEventSink
Definition: msctf.c:55
uint32_t entry
Definition: isohybrid.c:63
#define GUID_NULL
Definition: ks.h:106
Definition: _list.h:228
Definition: time.h:76
#define ERR(fmt,...)
Definition: debug.h:109
Definition: msctf.c:59
#define S_OK
Definition: intsafe.h:59
ITfTextInputProcessor * pITfTextInputProcessor
Definition: msctf.c:53
EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD
Definition: msctf.idl:62
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
#define E_UNEXPECTED
Definition: winerror.h:2456
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1228
TF_LANGUAGEPROFILE LanguageProfile
Definition: msctf.c:52
#define HeapFree(x, y, z)
Definition: compat.h:402
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by InputProcessorProfiles_ActivateLanguageProfile().

◆ advise_sink()

HRESULT advise_sink ( struct list sink_list,
REFIID  riid,
DWORD  cookie_magic,
IUnknown unk,
DWORD cookie 
)

Definition at line 285 of file msctf.c.

286 {
287  Sink *sink;
288 
289  sink = HeapAlloc(GetProcessHeap(), 0, sizeof(*sink));
290  if (!sink)
291  return E_OUTOFMEMORY;
292 
293  if (FAILED(IUnknown_QueryInterface(unk, riid, (void**)&sink->interfaces.pIUnknown)))
294  {
297  }
298 
299  list_add_head(sink_list, &sink->entry);
300  *cookie = generate_Cookie(cookie_magic, sink);
301  TRACE("cookie %x\n", *cookie);
302  return S_OK;
303 }
#define CONNECT_E_CANNOTCONNECT
Definition: olectl.h:253
REFIID riid
Definition: precomp.h:44
__WINE_SERVER_LIST_INLINE void list_add_head(struct list *list, struct list *elem)
Definition: list.h:96
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define S_OK
Definition: intsafe.h:59
#define HeapFree(x, y, z)
Definition: compat.h:402
DWORD generate_Cookie(DWORD magic, LPVOID data)
Definition: msctf.c:189

Referenced by CompartmentSource_AdviseSink(), ContextSource_AdviseSink(), DocumentMgrSource_AdviseSink(), IPPSource_AdviseSink(), and ThreadMgrSource_AdviseSink().

◆ ClassFactory_AddRef()

static ULONG WINAPI ClassFactory_AddRef ( IClassFactory iface)
static

Definition at line 124 of file msctf.c.

125 {
127  return InterlockedIncrement(&This->ref);
128 }
static ClassFactory * impl_from_IClassFactory(IClassFactory *iface)
Definition: msctf.c:100
#define InterlockedIncrement
Definition: armddk.h:53

◆ ClassFactory_Constructor()

static HRESULT ClassFactory_Constructor ( LPFNCONSTRUCTOR  ctor,
LPVOID ppvOut 
)
static

Definition at line 175 of file msctf.c.

176 {
178  This->IClassFactory_iface.lpVtbl = &ClassFactoryVtbl;
179  This->ref = 1;
180  This->ctor = ctor;
181  *ppvOut = &This->IClassFactory_iface;
182  TRACE("Created class factory %p\n", This);
183  return S_OK;
184 }
LPFNCONSTRUCTOR ctor
Definition: msctf.c:83
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define S_OK
Definition: intsafe.h:59
static const IClassFactoryVtbl ClassFactoryVtbl
Definition: msctf.c:164

Referenced by DllGetClassObject().

◆ ClassFactory_CreateInstance()

static HRESULT WINAPI ClassFactory_CreateInstance ( IClassFactory iface,
IUnknown punkOuter,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 140 of file msctf.c.

141 {
143  HRESULT ret;
144  IUnknown *obj;
145 
146  TRACE("(%p, %p, %s, %p)\n", iface, punkOuter, debugstr_guid(iid), ppvOut);
147  ret = This->ctor(punkOuter, &obj);
148  if (FAILED(ret))
149  return ret;
150  ret = IUnknown_QueryInterface(obj, iid, ppvOut);
151  IUnknown_Release(obj);
152  return ret;
153 }
static ClassFactory * impl_from_IClassFactory(IClassFactory *iface)
Definition: msctf.c:100
GLsizei GLsizei GLuint * obj
Definition: glext.h:6042
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
int ret

◆ ClassFactory_Destructor()

static void ClassFactory_Destructor ( ClassFactory This)
static

Definition at line 105 of file msctf.c.

106 {
107  TRACE("Destroying class factory %p\n", This);
109 }
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by ClassFactory_Release().

◆ ClassFactory_LockServer()

static HRESULT WINAPI ClassFactory_LockServer ( IClassFactory iface,
BOOL  fLock 
)
static

Definition at line 155 of file msctf.c.

156 {
158 
159  TRACE("(%p)->(%x)\n", This, fLock);
160 
161  return S_OK;
162 }
static ClassFactory * impl_from_IClassFactory(IClassFactory *iface)
Definition: msctf.c:100
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59

◆ ClassFactory_QueryInterface()

static HRESULT WINAPI ClassFactory_QueryInterface ( IClassFactory iface,
REFIID  riid,
LPVOID ppvOut 
)
static

Definition at line 111 of file msctf.c.

112 {
113  *ppvOut = NULL;
115  IClassFactory_AddRef(iface);
116  *ppvOut = iface;
117  return S_OK;
118  }
119 
120  WARN("Unknown interface %s\n", debugstr_guid(riid));
121  return E_NOINTERFACE;
122 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
#define WARN(fmt,...)
Definition: debug.h:111
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
const GUID IID_IClassFactory
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ ClassFactory_Release()

static ULONG WINAPI ClassFactory_Release ( IClassFactory iface)
static

Definition at line 130 of file msctf.c.

131 {
134 
135  if (ret == 0)
137  return ret;
138 }
static void ClassFactory_Destructor(ClassFactory *This)
Definition: msctf.c:105
static ClassFactory * impl_from_IClassFactory(IClassFactory *iface)
Definition: msctf.c:100
int ret
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1

◆ deactivate_given_ts()

static HRESULT deactivate_given_ts ( ActivatedTextService actsvr)
static

Definition at line 361 of file msctf.c.

362 {
363  HRESULT hr = S_OK;
364 
365  if (actsvr->pITfTextInputProcessor)
366  {
367  hr = ITfTextInputProcessor_Deactivate(actsvr->pITfTextInputProcessor);
368  ITfTextInputProcessor_Release(actsvr->pITfTextInputProcessor);
369  ITfThreadMgrEx_Release(actsvr->pITfThreadMgrEx);
370  actsvr->pITfTextInputProcessor = NULL;
371  actsvr->pITfThreadMgrEx = NULL;
372  }
373 
374  return hr;
375 }
HRESULT hr
Definition: shlfolder.c:183
ITfThreadMgrEx * pITfThreadMgrEx
Definition: msctf.c:54
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
ITfTextInputProcessor * pITfTextInputProcessor
Definition: msctf.c:53

Referenced by deactivate_remove_conflicting_ts(), and deactivate_textservices().

◆ deactivate_remove_conflicting_ts()

static void deactivate_remove_conflicting_ts ( REFCLSID  catid)
static

Definition at line 377 of file msctf.c.

378 {
379  AtsEntry *ats, *cursor2;
380 
382  {
384  {
385  deactivate_given_ts(ats->ats);
386  list_remove(&ats->entry);
387  HeapFree(GetProcessHeap(),0,ats->ats);
388  HeapFree(GetProcessHeap(),0,ats);
389  /* we are guaranteeing there is only 1 */
390  break;
391  }
392  }
393 }
static HRESULT deactivate_given_ts(ActivatedTextService *actsvr)
Definition: msctf.c:361
static struct list AtsList
Definition: msctf.c:69
struct list entry
Definition: msctf.c:61
GUID catid
Definition: msctf.idl:608
ActivatedTextService * ats
Definition: msctf.c:62
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
#define GetProcessHeap()
Definition: compat.h:403
uint32_t entry
Definition: isohybrid.c:63
Definition: msctf.c:59
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
TF_LANGUAGEPROFILE LanguageProfile
Definition: msctf.c:52
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by add_active_textservice().

◆ deactivate_textservices()

HRESULT deactivate_textservices ( void  )

Definition at line 493 of file msctf.c.

494 {
495  AtsEntry *ats;
496 
497  if (activated > 0)
498  activated --;
499 
500  if (activated == 0)
502  deactivate_given_ts(ats->ats);
503 
504  return S_OK;
505 }
static UINT activated
Definition: msctf.c:70
static HRESULT deactivate_given_ts(ActivatedTextService *actsvr)
Definition: msctf.c:361
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
uint32_t entry
Definition: isohybrid.c:63
Definition: msctf.c:59
#define S_OK
Definition: intsafe.h:59

Referenced by ThreadMgr_Deactivate().

◆ DllCanUnloadNow()

HRESULT WINAPI DllCanUnloadNow ( void  )

Definition at line 576 of file msctf.c.

577 {
578  return S_FALSE;
579 }
#define S_FALSE
Definition: winerror.h:2357

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  clsid,
REFIID  iid,
LPVOID ppvOut 
)

Definition at line 584 of file msctf.c.

585 {
586  int i;
587 
588  *ppvOut = NULL;
589  if (!IsEqualIID(iid, &IID_IUnknown) && !IsEqualIID(iid, &IID_IClassFactory))
590  return E_NOINTERFACE;
591 
592  for (i = 0; ClassesTable[i].clsid != NULL; i++)
594  return ClassFactory_Constructor(ClassesTable[i].ctor, ppvOut);
595  }
596  FIXME("CLSID %s not supported\n", debugstr_guid(clsid));
598 }
#define E_NOINTERFACE
Definition: winerror.h:2364
LPFNCONSTRUCTOR ctor
Definition: msctf.c:83
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663
static HRESULT ClassFactory_Constructor(LPFNCONSTRUCTOR ctor, LPVOID *ppvOut)
Definition: msctf.c:175
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 FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IUnknown
REFCLSID clsid
Definition: msctf.c:82
const GUID IID_IClassFactory
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
static const struct @468 ClassesTable[]

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hinst,
DWORD  fdwReason,
LPVOID  fImpLoad 
)

Definition at line 554 of file msctf.c.

555 {
556  TRACE("%p 0x%x %p\n", hinst, fdwReason, fImpLoad);
557  switch (fdwReason)
558  {
559  case DLL_WINE_PREATTACH:
560  return FALSE; /* prefer native version */
561  case DLL_PROCESS_ATTACH:
563  tlsIndex = TlsAlloc();
564  break;
565  case DLL_PROCESS_DETACH:
566  if (fImpLoad) break;
567  TlsFree(tlsIndex);
568  break;
569  }
570  return TRUE;
571 }
static HINSTANCE MSCTF_hinstance
Definition: msctf.c:42
#define TRUE
Definition: types.h:120
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
DWORD tlsIndex
Definition: msctf.c:72
#define DLL_PROCESS_DETACH
Definition: compat.h:119
#define TRACE(s)
Definition: solgame.cpp:4
BOOL WINAPI TlsFree(IN DWORD Index)
Definition: thread.c:1154
DWORD WINAPI TlsAlloc(VOID)
Definition: thread.c:1088
DWORD LPVOID fImpLoad
Definition: misc.cpp:155
static HINSTANCE hinst
Definition: edit.c:551

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 603 of file msctf.c.

604 {
606 }
static HINSTANCE MSCTF_hinstance
Definition: msctf.c:42
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 611 of file msctf.c.

612 {
614 }
static HINSTANCE MSCTF_hinstance
Definition: msctf.c:42
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110

◆ enumerate_Cookie()

DWORD enumerate_Cookie ( DWORD  magic,
DWORD index 
)

Definition at line 273 of file msctf.c.

274 {
275  unsigned int i;
276  for (i = *index; i < id_last; i++)
277  if (cookies[i].id != 0 && cookies[i].magic == magic)
278  {
279  *index = (i+1);
280  return cookies[i].id;
281  }
282  return 0x0;
283 }
static UINT id_last
Definition: msctf.c:66
u32_t magic(void)
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
GLuint index
Definition: glext.h:6031
static CookieInternal * cookies
Definition: msctf.c:65
DWORD id
Definition: msctf.c:46

Referenced by CategoryMgr_RegisterGUID().

◆ free_sink()

static void free_sink ( Sink sink)
static

Definition at line 305 of file msctf.c.

306 {
307  list_remove(&sink->entry);
308  IUnknown_Release(sink->interfaces.pIUnknown);
310 }
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
Definition: list.h:108
#define GetProcessHeap()
Definition: compat.h:403
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by free_sinks(), and unadvise_sink().

◆ free_sinks()

void free_sinks ( struct list sink_list)

Definition at line 324 of file msctf.c.

325 {
326  while(!list_empty(sink_list))
327  {
328  Sink* sink = LIST_ENTRY(sink_list->next, Sink, entry);
329  free_sink(sink);
330  }
331 }
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
struct list * next
Definition: list.h:38
static void free_sink(Sink *sink)
Definition: msctf.c:305
uint32_t entry
Definition: isohybrid.c:63
__WINE_SERVER_LIST_INLINE int list_empty(const struct list *list)
Definition: list.h:143
#define LIST_ENTRY(type)
Definition: queue.h:175

Referenced by Compartment_Destructor(), Context_Destructor(), DocumentMgr_Destructor(), InputProcessorProfiles_Destructor(), and ThreadMgr_Destructor().

◆ generate_Cookie()

DWORD generate_Cookie ( DWORD  magic,
LPVOID  data 
)

Definition at line 189 of file msctf.c.

190 {
191  UINT i;
192 
193  /* try to reuse IDs if possible */
194  for (i = 0; i < id_last; i++)
195  if (cookies[i].id == 0) break;
196 
197  if (i == array_size)
198  {
199  if (!array_size)
200  {
202  if (!cookies)
203  {
204  ERR("Out of memory, Unable to alloc cookies array\n");
205  return 0;
206  }
207  array_size = 10;
208  }
209  else
210  {
212  sizeof(CookieInternal) * (array_size * 2));
213  if (!new_cookies)
214  {
215  ERR("Out of memory, Unable to realloc cookies array\n");
216  return 0;
217  }
218  cookies = new_cookies;
219  array_size *= 2;
220  }
221  }
222 
223  cookies[i].id = i + 1; /* a return of 0 is used for failure */
224  cookies[i].magic = magic;
225  cookies[i].data = data;
226 
227  if (i == id_last)
228  id_last++;
229 
230  return cookies[i].id;
231 }
LPVOID data
Definition: msctf.c:48
static UINT id_last
Definition: msctf.c:66
u32_t magic(void)
static UINT array_size
Definition: msctf.c:67
DWORD magic
Definition: msctf.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
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static CookieInternal * cookies
Definition: msctf.c:65
#define ERR(fmt,...)
Definition: debug.h:109
#define HeapReAlloc
Definition: compat.h:401
unsigned int UINT
Definition: ndis.h:50
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
DWORD id
Definition: msctf.c:46

Referenced by advise_sink(), CategoryMgr_RegisterGUID(), Context_Constructor(), and TextStoreACPSink_OnLockGranted().

◆ get_active_textservice()

BOOL get_active_textservice ( REFCLSID  rclsid,
TF_LANGUAGEPROFILE profile 
)

Definition at line 459 of file msctf.c.

460 {
461  AtsEntry *ats;
462 
464  {
465  if (IsEqualCLSID(rclsid,&ats->ats->LanguageProfile.clsid))
466  {
467  if (profile)
468  *profile = ats->ats->LanguageProfile;
469  return TRUE;
470  }
471  }
472  return FALSE;
473 }
#define TRUE
Definition: types.h:120
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
uint32_t entry
Definition: isohybrid.c:63
Definition: msctf.c:59
#define profile
Definition: kernel32.h:12
TF_LANGUAGEPROFILE LanguageProfile
Definition: msctf.c:52
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96

Referenced by InputProcessorProfiles_ActivateLanguageProfile(), InputProcessorProfiles_GetActiveLanguageProfile(), and next_LanguageProfile().

◆ get_Cookie_data()

LPVOID get_Cookie_data ( DWORD  id)

Definition at line 246 of file msctf.c.

247 {
248  UINT index = id - 1;
249 
250  if (index >= id_last)
251  return NULL;
252 
253  if (cookies[index].id == 0)
254  return NULL;
255 
256  return cookies[index].data;
257 }
LPVOID data
Definition: msctf.c:48
static UINT id_last
Definition: msctf.c:66
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
static CookieInternal * cookies
Definition: msctf.c:65
#define index(s, c)
Definition: various.h:29
unsigned int UINT
Definition: ndis.h:50

Referenced by CategoryMgr_GetGUID(), CategoryMgr_IsEqualTfGuidAtom(), CategoryMgr_RegisterGUID(), Context_GetEnd(), Context_GetSelection(), Context_GetStart(), and InsertAtSelection_InsertTextAtSelection().

◆ get_Cookie_magic()

DWORD get_Cookie_magic ( DWORD  id)

Definition at line 233 of file msctf.c.

234 {
235  UINT index = id - 1;
236 
237  if (index >= id_last)
238  return 0;
239 
240  if (cookies[index].id == 0)
241  return 0;
242 
243  return cookies[index].magic;
244 }
static UINT id_last
Definition: msctf.c:66
DWORD magic
Definition: msctf.c:47
GLuint index
Definition: glext.h:6031
static CookieInternal * cookies
Definition: msctf.c:65
#define index(s, c)
Definition: various.h:29
unsigned int UINT
Definition: ndis.h:50

Referenced by CategoryMgr_GetGUID(), CategoryMgr_IsEqualTfGuidAtom(), CompartmentSource_UnadviseSink(), Context_GetEnd(), Context_GetSelection(), Context_GetStart(), Context_SetSelection(), ContextSource_UnadviseSink(), DocumentMgrSource_UnadviseSink(), InsertAtSelection_InsertTextAtSelection(), IPPSource_UnadviseSink(), and ThreadMgrSource_UnadviseSink().

◆ get_textservice_clsid()

CLSID get_textservice_clsid ( TfClientId  tid)

Definition at line 507 of file msctf.c.

508 {
509  AtsEntry *ats;
510 
512  if (ats->ats->tid == tid)
513  return ats->ats->LanguageProfile.clsid;
514  return GUID_NULL;
515 }
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
TfClientId tid
Definition: msctf.c:56
uint32_t entry
Definition: isohybrid.c:63
#define GUID_NULL
Definition: ks.h:106
Definition: msctf.c:59
TF_LANGUAGEPROFILE LanguageProfile
Definition: msctf.c:52
static TfClientId tid

Referenced by KeystrokeMgr_AdviseKeyEventSink(), and KeystrokeMgr_UnadviseKeyEventSink().

◆ get_textservice_sink()

HRESULT get_textservice_sink ( TfClientId  tid,
REFCLSID  iid,
IUnknown **  sink 
)

Definition at line 517 of file msctf.c.

518 {
519  AtsEntry *ats;
520 
521  if (!IsEqualCLSID(iid,&IID_ITfKeyEventSink))
522  return E_NOINTERFACE;
523 
525  if (ats->ats->tid == tid)
526  {
527  *sink = (IUnknown*)ats->ats->pITfKeyEventSink;
528  return S_OK;
529  }
530 
531  return E_FAIL;
532 }
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_FAIL
Definition: ddrawi.h:102
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
TfClientId tid
Definition: msctf.c:56
ITfKeyEventSink * pITfKeyEventSink
Definition: msctf.c:55
uint32_t entry
Definition: isohybrid.c:63
Definition: msctf.c:59
#define S_OK
Definition: intsafe.h:59
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
static TfClientId tid

Referenced by KeystrokeMgr_AdviseKeyEventSink(), and KeystrokeMgr_UnadviseKeyEventSink().

◆ impl_from_IClassFactory()

static ClassFactory* impl_from_IClassFactory ( IClassFactory iface)
inlinestatic

Definition at line 100 of file msctf.c.

101 {
102  return CONTAINING_RECORD(iface, ClassFactory, IClassFactory_iface);
103 }
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)
Definition: Messaging.c:560

Referenced by ClassFactory_AddRef(), ClassFactory_CreateInstance(), ClassFactory_LockServer(), and ClassFactory_Release().

◆ remove_Cookie()

LPVOID remove_Cookie ( DWORD  id)

Definition at line 259 of file msctf.c.

260 {
261  UINT index = id - 1;
262 
263  if (index >= id_last)
264  return NULL;
265 
266  if (cookies[index].id == 0)
267  return NULL;
268 
269  cookies[index].id = 0;
270  return cookies[index].data;
271 }
LPVOID data
Definition: msctf.c:48
static UINT id_last
Definition: msctf.c:66
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
static CookieInternal * cookies
Definition: msctf.c:65
#define index(s, c)
Definition: various.h:29
unsigned int UINT
Definition: ndis.h:50
DWORD id
Definition: msctf.c:46

Referenced by Context_Destructor(), TextStoreACPSink_OnLockGranted(), and unadvise_sink().

◆ set_textservice_sink()

HRESULT set_textservice_sink ( TfClientId  tid,
REFCLSID  iid,
IUnknown sink 
)

Definition at line 534 of file msctf.c.

535 {
536  AtsEntry *ats;
537 
538  if (!IsEqualCLSID(iid,&IID_ITfKeyEventSink))
539  return E_NOINTERFACE;
540 
542  if (ats->ats->tid == tid)
543  {
545  return S_OK;
546  }
547 
548  return E_FAIL;
549 }
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_FAIL
Definition: ddrawi.h:102
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
static struct list AtsList
Definition: msctf.c:69
ActivatedTextService * ats
Definition: msctf.c:62
TfClientId tid
Definition: msctf.c:56
ITfKeyEventSink * pITfKeyEventSink
Definition: msctf.c:55
uint32_t entry
Definition: isohybrid.c:63
Definition: msctf.c:59
#define S_OK
Definition: intsafe.h:59
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
static TfClientId tid

Referenced by KeystrokeMgr_AdviseKeyEventSink(), and KeystrokeMgr_UnadviseKeyEventSink().

◆ SetInputScope()

HRESULT WINAPI SetInputScope ( HWND  hwnd,
InputScope  inputscope 
)

Definition at line 642 of file msctf.c.

643 {
644  FIXME("STUB: %p %i\n",hwnd,inputscope);
645  return S_OK;
646 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ SetInputScopes()

HRESULT WINAPI SetInputScopes ( HWND  hwnd,
const InputScope pInputScopes,
UINT  cInputScopes,
WCHAR **  ppszPhraseList,
UINT  cPhrases,
WCHAR pszRegExp,
WCHAR pszSRGS 
)

Definition at line 651 of file msctf.c.

654 {
655  UINT i;
656  FIXME("STUB: %p ... %s %s\n",hwnd, debugstr_w(pszRegExp), debugstr_w(pszSRGS));
657  for (i = 0; i < cInputScopes; i++)
658  TRACE("\tScope[%u] = %i\n",i,pInputScopes[i]);
659  for (i = 0; i < cPhrases; i++)
660  TRACE("\tPhrase[%u] = %s\n",i,debugstr_w(ppszPhraseList[i]));
661 
662  return S_OK;
663 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
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_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
unsigned int UINT
Definition: ndis.h:50

◆ TF_CreateInputProcessorProfiles()

HRESULT WINAPI TF_CreateInputProcessorProfiles ( ITfInputProcessorProfiles **  ppipr)

Definition at line 668 of file msctf.c.

670 {
672 }
smooth NULL
Definition: ftsmooth.c:416
HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)

◆ TF_CreateLangBarItemMgr()

HRESULT WINAPI TF_CreateLangBarItemMgr ( ITfLangBarItemMgr **  pplbim)

Definition at line 692 of file msctf.c.

693 {
694  FIXME("stub %p\n", pplbim);
695  *pplbim = NULL;
696 
697  return E_NOTIMPL;
698 }
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ TF_CreateLangBarMgr()

HRESULT WINAPI TF_CreateLangBarMgr ( ITfLangBarMgr **  pppbm)

Definition at line 686 of file msctf.c.

687 {
688  TRACE("\n");
689  return LangBarMgr_Constructor(NULL,(IUnknown**)pppbm);
690 }
HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
Definition: langbarmgr.c:182
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4

◆ TF_CreateThreadMgr()

HRESULT WINAPI TF_CreateThreadMgr ( ITfThreadMgr **  pptim)

Definition at line 619 of file msctf.c.

620 {
621  TRACE("\n");
622  return ThreadMgr_Constructor(NULL,(IUnknown**)pptim);
623 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN
Definition: threadmgr.c:1342

◆ TF_GetThreadMgr()

HRESULT WINAPI TF_GetThreadMgr ( ITfThreadMgr **  pptim)

Definition at line 628 of file msctf.c.

629 {
630  TRACE("\n");
631  *pptim = TlsGetValue(tlsIndex);
632 
633  if (*pptim)
634  ITfThreadMgr_AddRef(*pptim);
635 
636  return S_OK;
637 }
DWORD tlsIndex
Definition: msctf.c:72
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1228

Referenced by DocumentMgr_Destructor().

◆ TF_InitMlngInfo()

HRESULT WINAPI TF_InitMlngInfo ( void  )

Definition at line 703 of file msctf.c.

704 {
705  FIXME("stub\n");
706  return S_OK;
707 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ TF_InvalidAssemblyListCacheIfExist()

HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist ( void  )

Definition at line 677 of file msctf.c.

678 {
679  FIXME("Stub\n");
680  return S_OK;
681 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ unadvise_sink()

HRESULT unadvise_sink ( DWORD  cookie)

Definition at line 312 of file msctf.c.

313 {
314  Sink *sink;
315 
316  sink = remove_Cookie(cookie);
317  if (!sink)
318  return CONNECT_E_NOCONNECTION;
319 
320  free_sink(sink);
321  return S_OK;
322 }
#define CONNECT_E_NOCONNECTION
Definition: olectl.h:251
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
LPVOID remove_Cookie(DWORD id)
Definition: msctf.c:259
static void free_sink(Sink *sink)
Definition: msctf.c:305
#define S_OK
Definition: intsafe.h:59

Referenced by CompartmentSource_UnadviseSink(), ContextSource_UnadviseSink(), DocumentMgrSource_UnadviseSink(), IPPSource_UnadviseSink(), and ThreadMgrSource_UnadviseSink().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msctf  )

Variable Documentation

◆ activated

◆ array_size

◆ AtsList

◆ ClassesTable

const { ... } ClassesTable[]
Initial value:
= {
}
HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
Definition: langbarmgr.c:182
EXTERN_C const CLSID CLSID_TF_CategoryMgr
Definition: msctf.idl:47
smooth NULL
Definition: ftsmooth.c:416
EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles
Definition: msctf.idl:45
HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
Definition: categorymgr.c:413
EXTERN_C const CLSID CLSID_TF_ThreadMgr
Definition: msctf.idl:44
EXTERN_C const CLSID CLSID_TF_DisplayAttributeMgr
Definition: msctf.idl:48
HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN
Definition: threadmgr.c:1342
EXTERN_C const CLSID CLSID_TF_LangBarMgr
Definition: msctf.idl:46

Referenced by DllGetClassObject().

◆ ClassFactoryVtbl

const IClassFactoryVtbl ClassFactoryVtbl
static
Initial value:
= {
}
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
Definition: msctf.c:124
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
Definition: msctf.c:155
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *ppvOut)
Definition: msctf.c:111
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
Definition: msctf.c:130
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *punkOuter, REFIID iid, LPVOID *ppvOut)
Definition: msctf.c:140

Definition at line 164 of file msctf.c.

Referenced by ClassFactory_Constructor().

◆ clsid

REFCLSID clsid

Definition at line 82 of file msctf.c.

Referenced by _create_object(), CFSFolder::_CreateExtensionUIObject(), CFSFolder::_GetDropTarget(), CFSFolder::_GetIconHandler(), actctx_get_miscstatus(), ACTION_PublishFeatures(), add_icon_to_control(), add_progid_record(), AssocCreate(), AtlComModuleRegisterServer(), ATL::AtlComModuleRegisterServer(), ATL::AtlComModuleUnregisterServer(), AtlGetObjectSourceInterface(), AtlModuleRegisterServer(), AtlModuleUnregisterServer(), AtlRegisterClassCategoriesHelper(), ATL::AtlRegisterClassCategoriesHelper(), AVIFILE_CreateClassFactory(), BindProtocol_StartEx(), BitmapDecoderInfo_Constructor(), BitmapEncoderInfo_Constructor(), call_script(), ClassMoniker_CreateFromDisplayName(), ClassMoniker_IsEqual(), CLRCreateInstance(), clsid_from_string_reg(), CLSIDEnumGUID_Next(), CLSIDFromProgID(), CLSIDFromProgIDEx(), CoCreateInstanceEx(), CoGetInstanceFromFile(), CoIsOle1Class(), COM_OpenKeyForAppIdFromCLSID(), COM_OpenKeyForCLSID(), create_activex_object(), create_automatic_entry(), IPCtrlWindow< ChildWindow, SIfacePtr< IWebBrowser2 > >::create_control(), create_engine(), create_instance(), create_mime_object(), create_object(), create_plugin_host(), create_proxy(), create_stub(), CreateComponentEnumerator(), CreateComponentInfo(), CreateFilterInstanceAndLoadFile(), SIfacePtr< IShellLink >::CreateInstance(), CustomMarshal_GetUnmarshalClass(), d3drm1_CreateObject(), d3drm2_CreateObject(), d3drm3_CreateObject(), DataCache_Construct(), DataCache_GetClassID(), DataCache_InitNew(), DataCache_Load(), db_initialize(), DECLARE_INTERFACE_(), DefaultHandler_Construct(), DefaultHandler_IPersistStorage_GetClassID(), DEVENUM_IEnumMoniker_Next(), DEVENUM_IMediaCatMoniker_IsEqual(), DllGetClassObject(), dochost_object_available(), DOMClassFactory_Create(), dump_template(), CDefaultContextMenu::EnumerateDynamicContextHandlerForKey(), EnumTfLanguageProfiles_Next(), FileMonikerImpl_IsEqual(), FilterGraph2_Connect(), FilterMapper_EnumMatchingFilters(), FilterMapper_RegisterFilter(), FilterMapper_RegisterFilterInstance(), FM2_WriteClsid(), format_clsid(), FormatConverterInfo_Constructor(), GdipSaveImageToStream(), get_component_info(), get_decoder_info(), get_default_source(), get_elem_clsid(), get_encoder_clsid(), get_engine_clsid(), get_facbuf_for_iid(), get_mime_clsid(), get_mime_filter(), get_moniker_comparison_data(), get_moniker_for_progid_display_name(), get_msxml_version(), get_protocol_cf(), get_protocol_handler(), get_storage(), ATL::CImage::GetClsidFromFileType(), CRegFolder::GetDetailsOf(), CRegFolder::GetDisplayNameOf(), ATL::CImage::GetEncoderClsid(), GetFileSourceFilter(), getIconLocationForFolder(), CSearchBar::GetSearchResultsFolder(), GetSplitter(), CQueryAssociations::GetString(), implicit_mta_proc(), init_session(), CRShellClassFactory::Initialize(), InitIconOverlays(), InitPropVariantFromCLSID(), InitShellServices(), InputProcessorProfileMgr_ActivateProfile(), InputProcessorProfileMgr_DeactivateProfile(), InputProcessorProfileMgr_GetProfile(), insert_static_object(), CSearchBar::Invoke(), IPropertyStorage_fnSetClass(), is_clsid_supported(), IsNamespaceExtensionHidden(), ItemMonikerImpl_IsEqual(), iterate_all_classes(), IUnknown_GetClassID(), local_server_GetClassID(), MediaStreamFilterImpl_GetClassID(), MetadataReaderInfo_Constructor(), MetadataReaderInfo_GetCLSID(), MkProtocol_StartEx(), msi_create_component_advertise_string(), NdrDllRegisterProxy(), NdrDllUnregisterProxy(), next_LanguageProfile(), OLECONVERT_GetOLE10ProgID(), OleCreateDefaultHandler(), OleCreateEmbeddingHelper(), OleCreateFromFile(), OleCreateFromFileEx(), OleCreateStaticFromData(), OleDoAutoConvert(), OleLoadFromStream(), OleRegEnumFormatEtc(), OleRegEnumVerbs(), OleRegGetMiscStatus(), OleRegGetUserType(), OleSaveToStream(), CTrayBandSite::OnLoad(), parse_classid(), PixelFormatInfo_Constructor(), pointer_default(), ProfileActivationSink_OnActivated(), ProgIDFromCLSID(), PropertyStorage_ReadHeaderFromStream(), ReadFmtUserTypeStg(), reg_context_menu_handler(), reg_icon_overlay(), reg_prop_sheet_handler(), register_clsid(), register_codec(), register_dsound_devices(), register_legacy_filters(), register_namespace(), register_progid(), register_ps_clsid_thread(), RegisterComponent(), RPC_StartLocalServer(), SSOThread::Run(), run_script(), RuntimeHost_GetInterface(), ATL::CImage::Save(), CRegFolder::SetNameOf(), setup_edit_mode(), SetupRegisterClass(), SHCreatePropSheetExtArrayEx(), SHELL32_BindToSF(), SHELL32_CoCreateInitSF(), SHGetObjectCompatFlags(), CShellDispatch::ShowBrowserBar(), SHSkipJunction(), START_TEST(), statusclb_OnProgress(), statusclb_OnStartBinding(), statusclb_OnStopBinding(), StgCreatePropStg(), Storage_SetClass(), STORAGE_WriteCompObj(), StorageBaseImpl_SetClass(), SxsLookupClrGuid(), test1_GetClassID(), test_CLSIDFromProgID(), test_CLSIDFromProgIDWrap(), test_CLSIDFromString(), test_CoGetInstanceFromFile(), test_CoGetPSClsid(), test_CoGetStandardMarshal(), test_com_aggregation(), test_CoRegisterPSClsid(), test_CreateBody(), test_data_cache(), test_data_cache_init(), test_data_cache_initnew(), test_data_cache_save_data(), test_decoder_info(), test_default_handler(), test_delegated_methods(), test_desktop_IPersist(), test_destroy_callback(), test_devenum(), test_early_abort(), test_find_com_redirection(), test_find_progid_redirection(), test_find_surrogate(), test_FolderShortcut(), test_freethreadedmarshaler(), test_iface_ptr(), test_InitPropVariantFromCLSID(), test_IUnknown_GetClassID(), test_IWinHttpRequest_Invoke(), test_legacy_filter_registration(), test_local_server(), test_marshal_channel_buffer(), test_media_streams(), test_metadata_APE(), test_metadata_GIF_comment(), test_multi_encoder(), test_object(), test_OleCreateStaticFromData(), test_OleDoAutoConvert(), test_pack_FILEDESCRIPTORA(), test_pack_FILEDESCRIPTORW(), test_pack_SHDESCRIPTIONID(), test_persist_GetClassId(), test_persiststream(), test_PropVariantCompare(), test_proxybuffer(), test_ReadClassStm(), test_reader_info(), test_SHGetObjectCompatFlags(), test_ShortcutFolder(), test_stub(), test_stubbuffer(), test_supported_encoders(), TestModuleRegistry(), testpersist_GetClassID(), UIINSERTOBJECTDLG_OnOpen(), UIINSERTOBJECTDLG_PopulateObjectTypes(), unregister_clsid(), UnregisterComponent(), URLMoniker_IsEqual(), vmr_create(), WriteFmtUserTypeStg(), and wWinMain().

◆ cookies

◆ ctor

◆ globalCompartmentMgr

ITfCompartmentMgr* globalCompartmentMgr = NULL

Definition at line 74 of file msctf.c.

Referenced by ThreadMgr_GetGlobalCompartment().

◆ id_last

UINT id_last
static

◆ MSCTF_hinstance

HINSTANCE MSCTF_hinstance
static

Definition at line 42 of file msctf.c.

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

◆ processId

TfClientId processId = 0

Definition at line 73 of file msctf.c.

Referenced by ThreadMgr_ActivateEx().

◆ szwSystemCTFKey

const WCHAR szwSystemCTFKey = {'S','O','F','T','W','A','R','E','\\','M','i','c','r','o','s','o','f','t','\\','C','T','F',0}

◆ szwSystemTIPKey

◆ tlsIndex