5d8cb2afa7d41d0a09bd1cf768a081155ce9c1d0
[reactos.git] / reactos / include / psdk / msctf.idl
1 /*
2 * Copyright 2008 Aric Stewart, CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #ifndef DO_NO_IMPORTS
20 import "oaidl.idl";
21 import "comcat.idl";
22 import "textstor.idl";
23 /* import "ctfutb.idl"; */
24 #endif
25 cpp_quote("#include <winuser.h>")
26
27 /* FIXME: LANGID is defined in winnt.h and mlang.h in the platform SDK */
28 cpp_quote("#ifndef _WINNT_H")
29 typedef WORD LANGID;
30 cpp_quote("#endif")
31
32 cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
33 cpp_quote("#define TF_E_DISCONNECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)")
34 cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
35 cpp_quote("#define TF_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
36
37 cpp_quote("HRESULT WINAPI TF_CreateThreadMgr(ITfThreadMgr **pptim);")
38 cpp_quote("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);")
39 cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);")
40
41 cpp_quote("EXTERN_C const GUID GUID_PROP_TEXTOWNER;")
42 cpp_quote("DEFINE_GUID(GUID_PROP_ATTRIBUTE,0x34b45670,0x7526,0x11d2,0xa1,0x47,0x00,0x10,0x5a,0x27,0x99,0xb5);")
43 cpp_quote("EXTERN_C const GUID GUID_PROP_LANGID;")
44 cpp_quote("EXTERN_C const GUID GUID_PROP_READING;")
45 cpp_quote("EXTERN_C const GUID GUID_PROP_COMPOSING;")
46
47 cpp_quote("EXTERN_C const CLSID CLSID_TF_ThreadMgr;")
48 cpp_quote("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;")
49 cpp_quote("EXTERN_C const CLSID CLSID_TF_CategoryMgr;")
50 cpp_quote("DEFINE_GUID(CLSID_TF_DisplayAttributeMgr,0x3ce74de4,0x53d3,0x4d74,0x8b,0x83,0x43,0x1b,0x38,0x28,0xba,0x53);")
51
52 /* GUIDs for Compartments */
53 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_DISABLED;")
54 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_OPENCLOSE;")
55 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_HANDWRITING_OPENCLOSE;")
56 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_DISABLED;")
57 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_OPENCLOSE;")
58 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_GLOBALSTATE;")
59 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_PERSISTMENUENABLED;")
60 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_EMPTYCONTEXT;")
61 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_TIPUISTATUS;")
62
63 /* GUIDs for Categories */
64 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;")
65 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;")
66 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;")
67 cpp_quote("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;")
68
69 typedef [uuid(7213778c-7bb0-4270-b050-6189ee594e97)] DWORD TfEditCookie;
70 typedef [uuid(de403c21-89fd-4f85-8b87-64584d063fbc)] DWORD TfClientId;
71 typedef [uuid(88a9c478-f3ec-4763-8345-cd9250443f8d)] DWORD TfGuidAtom;
72
73 cpp_quote("#define TF_MOD_ALT 0x0001")
74 cpp_quote("#define TF_MOD_CONTROL 0x0002")
75 cpp_quote("#define TF_MOD_SHIFT 0x0004")
76 cpp_quote("#define TF_MOD_RALT 0x0008")
77 cpp_quote("#define TF_MOD_RCONTROL 0x0010")
78 cpp_quote("#define TF_MOD_RSHIFT 0x0020")
79 cpp_quote("#define TF_MOD_LALT 0x0040")
80 cpp_quote("#define TF_MOD_LCONTROL 0x0080")
81 cpp_quote("#define TF_MOD_LSHIFT 0x0100")
82 cpp_quote("#define TF_MOD_ON_KEYUP 0x0200")
83 cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
84
85 interface ITfDocumentMgr;
86 interface ITfContext;
87 interface IEnumTfDocumentMgrs;
88 interface IEnumTfContexts;
89 interface ITfFunctionProvider;
90 interface IEnumTfFunctionProviders;
91 interface ITfCompartmentMgr;
92 interface ITfEditSession;
93 interface ITfRange;
94 interface ITfContextView;
95 interface IEnumTfContextViews;
96 interface ITfProperty;
97 interface ITfReadOnlyProperty;
98 interface IEnumTfProperties;
99 interface ITfRangeBackup;
100 interface IEnumTfLanguageProfiles;
101 interface ITfEditRecord;
102 interface ITfCompositionView;
103 interface ITfKeyEventSink;
104
105 typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE
106 {
107 CLSID clsid;
108 LANGID langid;
109 GUID catid;
110 BOOL fActive;
111 GUID guidProfile;
112 } TF_LANGUAGEPROFILE;
113
114 typedef [uuid(77c12f95-b783-450d-879f-1cd2362c6521)] struct TF_PRESERVEDKEY
115 {
116 UINT uVKey;
117 UINT uModifiers;
118 } TF_PRESERVEDKEY;
119
120 typedef [uuid(5a886226-ae9a-489b-b991-2b1e25ee59a9)] enum { TF_ANCHOR_START = 0, TF_ANCHOR_END = 1 } TfAnchor;
121
122 [
123 object,
124 uuid(aa80e801-2021-11d2-93e0-0060b067b86e),
125 pointer_default(unique)
126 ]
127 interface ITfThreadMgr: IUnknown
128 {
129 HRESULT Activate(
130 [out] TfClientId *ptid);
131
132 HRESULT Deactivate();
133
134 HRESULT CreateDocumentMgr(
135 [out] ITfDocumentMgr **ppdim);
136
137 HRESULT EnumDocumentMgrs(
138 [out] IEnumTfDocumentMgrs **ppEnum);
139
140 HRESULT GetFocus(
141 [out] ITfDocumentMgr **ppdimFocus);
142
143 HRESULT SetFocus(
144 [in] ITfDocumentMgr *pdimFocus);
145
146 HRESULT AssociateFocus(
147 [in] HWND hwnd,
148 [in, unique] ITfDocumentMgr *pdimNew,
149 [out] ITfDocumentMgr **ppdimPrev);
150
151 HRESULT IsThreadFocus(
152 [out] BOOL *pfThreadFocus);
153
154 HRESULT GetFunctionProvider(
155 [in] REFCLSID clsid,
156 [out] ITfFunctionProvider **ppFuncProv);
157
158 HRESULT EnumFunctionProviders(
159 [out] IEnumTfFunctionProviders **ppEnum);
160
161 HRESULT GetGlobalCompartment(
162 [out] ITfCompartmentMgr **ppCompMgr);
163 };
164
165 [
166 object,
167 uuid(d7540241-f9a1-4364-befc-dbcd2c4395b7),
168 pointer_default(unique)
169 ]
170 interface ITfCompositionView : IUnknown
171 {
172 HRESULT GetOwnerClsid([out] CLSID *pclsid);
173
174 HRESULT GetRange([out] ITfRange **ppRange);
175 }
176
177 [
178 object,
179 uuid(aa80e7f4-2021-11d2-93e0-0060b067b86e),
180 pointer_default(unique)
181 ]
182 interface ITfDocumentMgr: IUnknown
183 {
184 HRESULT CreateContext(
185 [in] TfClientId tidOwner,
186 [in] DWORD dwFlags,
187 [in, unique] IUnknown *punk,
188 [out] ITfContext **ppic,
189 [out] TfEditCookie *pecTextStore);
190
191 HRESULT Push(
192 [in] ITfContext *pic);
193
194 const DWORD TF_POPF_ALL = 0x0001;
195
196 HRESULT Pop(
197 [in] DWORD dwFlags);
198
199 HRESULT GetTop(
200 [out] ITfContext **ppic);
201
202 HRESULT GetBase(
203 [out] ITfContext **ppic);
204
205 HRESULT EnumContexts(
206 [out] IEnumTfContexts **ppEnum);
207 };
208
209 [
210 object,
211 uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e),
212 pointer_default(unique)
213 ]
214 interface ITfContext : IUnknown
215 {
216 const DWORD TF_ES_ASYNCDONTCARE = 0x0;
217 const DWORD TF_ES_SYNC = 0x1;
218 const DWORD TF_ES_READ = 0x2;
219 const DWORD TF_ES_READWRITE = 0x6;
220 const DWORD TF_ES_ASYNC = 0x8;
221
222 HRESULT RequestEditSession(
223 [in] TfClientId tid,
224 [in] ITfEditSession *pes,
225 [in] DWORD dwFlags,
226 [out] HRESULT *phrSession);
227
228 HRESULT InWriteSession(
229 [in] TfClientId tid,
230 [out] BOOL *pfWriteSession);
231
232 typedef [uuid(1690be9b-d3e9-49f6-8d8b-51b905af4c43)] enum { TF_AE_NONE, TF_AE_START, TF_AE_END } TfActiveSelEnd;
233
234 typedef [uuid(36ae42a4-6989-4bdc-b48a-6137b7bf2e42)] struct TF_SELECTIONSTYLE
235 {
236 TfActiveSelEnd ase;
237 BOOL fInterimChar;
238 } TF_SELECTIONSTYLE;
239
240 typedef [uuid(75eb22f2-b0bf-46a8-8006-975a3b6efcf1)] struct TF_SELECTION
241 {
242 ITfRange *range;
243 TF_SELECTIONSTYLE style;
244 } TF_SELECTION;
245
246 const ULONG TF_DEFAULT_SELECTION = TS_DEFAULT_SELECTION;
247
248 HRESULT GetSelection(
249 [in] TfEditCookie ec,
250 [in] ULONG ulIndex,
251 [in] ULONG ulCount,
252 [out, size_is(ulCount), length_is(*pcFetched)] TF_SELECTION *pSelection,
253 [out] ULONG *pcFetched);
254
255 HRESULT SetSelection(
256 [in] TfEditCookie ec,
257 [in] ULONG ulCount,
258 [in, size_is(ulCount)] const TF_SELECTION *pSelection);
259
260 HRESULT GetStart(
261 [in] TfEditCookie ec,
262 [out] ITfRange **ppStart);
263
264 HRESULT GetEnd(
265 [in] TfEditCookie ec,
266 [out] ITfRange **ppEnd);
267
268 typedef [uuid(bc7d979a-846a-444d-afef-0a9bfa82b961)] TS_STATUS TF_STATUS;
269 const DWORD TF_SD_READONLY = TS_SD_READONLY;
270 const DWORD TF_SD_LOADING = TS_SD_LOADING;
271 const DWORD TF_SS_DISJOINTSEL = TS_SS_DISJOINTSEL;
272 const DWORD TF_SS_REGIONS = TS_SS_REGIONS;
273 const DWORD TF_SS_TRANSITORY = TS_SS_TRANSITORY;
274
275
276 HRESULT GetActiveView(
277 [out] ITfContextView **ppView);
278
279 HRESULT EnumViews(
280 [out] IEnumTfContextViews **ppEnum);
281
282 HRESULT GetStatus(
283 [out] TF_STATUS *pdcs);
284
285 HRESULT GetProperty(
286 [in] REFGUID guidProp,
287 [out] ITfProperty **ppProp);
288
289 HRESULT GetAppProperty(
290 [in] REFGUID guidProp,
291 [out] ITfReadOnlyProperty **ppProp);
292
293 HRESULT TrackProperties(
294 [in, size_is(cProp)] const GUID **prgProp,
295 [in] ULONG cProp,
296 [in, size_is(cAppProp)] const GUID **prgAppProp,
297 [in] ULONG cAppProp,
298 [out] ITfReadOnlyProperty **ppProperty);
299
300 HRESULT EnumProperties(
301 [out] IEnumTfProperties **ppEnum);
302
303 HRESULT GetDocumentMgr(
304 [out] ITfDocumentMgr **ppDm);
305
306 HRESULT CreateRangeBackup(
307 [in] TfEditCookie ec,
308 [in] ITfRange *pRange,
309 [out] ITfRangeBackup **ppBackup);
310
311 };
312
313 [
314 object,
315 uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7),
316 pointer_default(unique)
317 ]
318 interface ITfSource : IUnknown
319 {
320 HRESULT AdviseSink(
321 [in] REFIID riid,
322 [in, iid_is(riid)] IUnknown *punk,
323 [out] DWORD *pdwCookie);
324
325 HRESULT UnadviseSink(
326 [in] DWORD dwCookie);
327 };
328
329 [
330 object,
331 local,
332 uuid(1F02B6C5-7842-4EE6-8A0B-9A24183A95CA),
333 pointer_default(unique)
334 ]
335 interface ITfInputProcessorProfiles : IUnknown
336 {
337 HRESULT Register(
338 [in] REFCLSID rclsid);
339
340 HRESULT Unregister(
341 [in] REFCLSID rclsid);
342
343 HRESULT AddLanguageProfile(
344 [in] REFCLSID rclsid,
345 [in] LANGID langid,
346 [in] REFGUID guidProfile,
347 [in, size_is(cchDesc)] const WCHAR *pchDesc,
348 [in] ULONG cchDesc,
349 [in, size_is(cchFile)] const WCHAR *pchIconFile,
350 [in] ULONG cchFile,
351 [in] ULONG uIconIndex);
352
353 HRESULT RemoveLanguageProfile(
354 [in] REFCLSID rclsid,
355 [in] LANGID langid,
356 [in] REFGUID guidProfile);
357
358 HRESULT EnumInputProcessorInfo(
359 [out] IEnumGUID **ppEnum);
360
361 HRESULT GetDefaultLanguageProfile(
362 [in] LANGID langid,
363 [in] REFGUID catid,
364 [out] CLSID *pclsid,
365 [out] GUID *pguidProfile);
366
367 HRESULT SetDefaultLanguageProfile(
368 [in] LANGID langid,
369 [in] REFCLSID rclsid,
370 [in] REFGUID guidProfiles);
371
372 HRESULT ActivateLanguageProfile(
373 [in] REFCLSID rclsid,
374 [in] LANGID langid,
375 [in] REFGUID guidProfiles);
376
377 HRESULT GetActiveLanguageProfile(
378 [in] REFCLSID rclsid,
379 [out] LANGID *plangid,
380 [out] GUID *pguidProfile);
381
382 HRESULT GetLanguageProfileDescription(
383 [in] REFCLSID rclsid,
384 [in] LANGID langid,
385 [in] REFGUID guidProfile,
386 [out] BSTR *pbstrProfile);
387
388 HRESULT GetCurrentLanguage(
389 [out] LANGID *plangid);
390
391 HRESULT ChangeCurrentLanguage(
392 [in] LANGID langid);
393
394 HRESULT GetLanguageList(
395 [out] LANGID **ppLangId,
396 [out] ULONG *pulCount);
397
398 HRESULT EnumLanguageProfiles(
399 [in] LANGID langid,
400 [out] IEnumTfLanguageProfiles **ppEnum);
401
402 HRESULT EnableLanguageProfile(
403 [in] REFCLSID rclsid,
404 [in] LANGID langid,
405 [in] REFGUID guidProfile,
406 [in] BOOL fEnable);
407
408 HRESULT IsEnabledLanguageProfile(
409 [in] REFCLSID rclsid,
410 [in] LANGID langid,
411 [in] REFGUID guidProfile,
412 [out] BOOL *pfEnable);
413
414 HRESULT EnableLanguageProfileByDefault(
415 [in] REFCLSID rclsid,
416 [in] LANGID langid,
417 [in] REFGUID guidProfile,
418 [in] BOOL fEnable);
419
420 HRESULT SubstituteKeyboardLayout(
421 [in] REFCLSID rclsid,
422 [in] LANGID langid,
423 [in] REFGUID guidProfile,
424 [in] HKL hKL);
425 };
426
427 typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)]
428 enum {
429 TF_LS_NONE = 0,
430 TF_LS_SOLID = 1,
431 TF_LS_DOT = 2,
432 TF_LS_DASH = 3,
433 TF_LS_SQUIGGLE = 4
434 } TF_DA_LINESTYLE;
435
436 typedef [uuid(d9b92e21-084a-401b-9c64-1e6dad91a1ab)]
437 enum {
438 TF_CT_NONE = 0,
439 TF_CT_SYSCOLOR = 1,
440 TF_CT_COLORREF = 2
441 } TF_DA_COLORTYPE;
442
443 typedef [uuid(90d0cb5e-6520-4a0f-b47c-c39bd955f0d6)]
444 struct TF_DA_COLOR {
445 TF_DA_COLORTYPE type;
446 [switch_type(TF_DA_COLORTYPE), switch_is(type)]
447 union {
448 [case(TF_CT_SYSCOLOR)] int nIndex;
449 [case(TF_CT_COLORREF)] COLORREF cr;
450 };
451 } TF_DA_COLOR;
452
453 typedef [uuid(33d2fe4b-6c24-4f67-8d75-3bc1819e4126)]
454 enum {
455 TF_ATTR_INPUT = 0,
456 TF_ATTR_TARGET_CONVERTED = 1,
457 TF_ATTR_CONVERTED = 2,
458 TF_ATTR_TARGET_NOTCONVERTED = 3,
459 TF_ATTR_INPUT_ERROR = 4,
460 TF_ATTR_FIXEDCONVERTED = 5,
461 TF_ATTR_OTHER = -1
462 } TF_DA_ATTR_INFO;
463
464 typedef [uuid(1bf1c305-419b-4182-a4d2-9bfadc3f021f)]
465 struct TF_DISPLAYATTRIBUTE {
466 TF_DA_COLOR crText;
467 TF_DA_COLOR crBk;
468 TF_DA_LINESTYLE lsStyle;
469 BOOL fBoldLine;
470 TF_DA_COLOR crLine;
471 TF_DA_ATTR_INFO bAttr;
472 } TF_DISPLAYATTRIBUTE;
473
474 [
475 object,
476 uuid(70528852-2f26-4aea-8c96-215150578932),
477 pointer_default(unique)
478 ]
479 interface ITfDisplayAttributeInfo : IUnknown
480 {
481 HRESULT GetGUID([out] GUID *pguid);
482
483 HRESULT GetDescription([out] BSTR *pbstrDesc);
484
485 HRESULT GetAttributeInfo([out] TF_DISPLAYATTRIBUTE *pda);
486
487 HRESULT SetAttributeInfo([in] const TF_DISPLAYATTRIBUTE *pda);
488
489 HRESULT Reset();
490 }
491
492 [
493 object,
494 uuid(7cef04d7-cb75-4e80-a7ab-5f5bc7d332de),
495 pointer_default(unique)
496 ]
497 interface IEnumTfDisplayAttributeInfo : IUnknown
498 {
499 HRESULT Clone([out] IEnumTfDisplayAttributeInfo **ppEnum);
500
501 HRESULT Next(
502 [in] ULONG ulCount,
503 [out, size_is(ulCount), length_is(*pcFetched)] ITfDisplayAttributeInfo **rgInfo,
504 [out] ULONG *pcFetched);
505
506 HRESULT Reset();
507
508 HRESULT Skip([in] ULONG ulCount);
509 }
510
511 [
512 object,
513 local,
514 uuid(8ded7393-5db1-475c-9e71-a39111b0ff67),
515 pointer_default(unique)
516 ]
517 interface ITfDisplayAttributeMgr : IUnknown
518 {
519 HRESULT OnUpdateInfo();
520
521 HRESULT EnumDisplayAttributeInfo([out] IEnumTfDisplayAttributeInfo **ppEnum);
522
523 HRESULT GetDisplayAttributeInfo(
524 [in] REFGUID guid,
525 [out] ITfDisplayAttributeInfo **ppInfo,
526 [out] CLSID *pclsidOwner);
527
528 }
529
530 [
531 object,
532 local,
533 uuid(c3acefb5-f69d-4905-938f-fcadcf4be830),
534 pointer_default(unique)
535 ]
536 interface ITfCategoryMgr : IUnknown
537 {
538 HRESULT RegisterCategory([in] REFCLSID rclsid,
539 [in] REFGUID rcatid,
540 [in] REFGUID rguid);
541
542 HRESULT UnregisterCategory([in] REFCLSID rclsid,
543 [in] REFGUID rcatid,
544 [in] REFGUID rguid);
545
546 HRESULT EnumCategoriesInItem([in] REFGUID rguid,
547 [out] IEnumGUID **ppEnum);
548
549 HRESULT EnumItemsInCategory([in] REFGUID rcatid,
550 [out] IEnumGUID **ppEnum);
551
552 HRESULT FindClosestCategory([in] REFGUID rguid,
553 [out] GUID *pcatid,
554 [in, size_is(ulCount)] const GUID **ppcatidList,
555 [in] ULONG ulCount);
556
557 HRESULT RegisterGUIDDescription([in] REFCLSID rclsid,
558 [in] REFGUID rguid,
559 [in, size_is(cch)] const WCHAR *pchDesc,
560 [in] ULONG cch);
561
562 HRESULT UnregisterGUIDDescription([in] REFCLSID rclsid,
563 [in] REFGUID rguid);
564
565 HRESULT GetGUIDDescription([in] REFGUID rguid,
566 [out] BSTR *pbstrDesc);
567
568 HRESULT RegisterGUIDDWORD([in] REFCLSID rclsid,
569 [in] REFGUID rguid,
570 [in] DWORD dw);
571
572 HRESULT UnregisterGUIDDWORD([in] REFCLSID rclsid,
573 [in] REFGUID rguid);
574
575 HRESULT GetGUIDDWORD([in] REFGUID rguid,
576 [out] DWORD *pdw);
577
578 HRESULT RegisterGUID([in] REFGUID rguid,
579 [out] TfGuidAtom *pguidatom);
580
581 HRESULT GetGUID([in] TfGuidAtom guidatom,
582 [out] GUID *pguid);
583
584 HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom,
585 [in] REFGUID rguid,
586 [out] BOOL *pfEqual);
587 };
588
589 [
590 object,
591 uuid(8127d409-ccd3-4683-967a-b43d5b482bf7),
592 pointer_default(unique)
593 ]
594 interface ITfTextEditSink : IUnknown
595 {
596 HRESULT OnEndEdit(
597 [in] ITfContext *pic,
598 [in] TfEditCookie ecReadOnly,
599 [in] ITfEditRecord *pEditRecord);
600 };
601
602 [
603 object,
604 uuid(5F20AA40-B57A-4F34-96AB-3576F377CC79),
605 pointer_default(unique)
606 ]
607 interface ITfContextOwnerCompositionSink : IUnknown
608 {
609 HRESULT OnStartComposition(
610 [in] ITfCompositionView *pComposition,
611 [out] BOOL *pfOk);
612
613 HRESULT OnUpdateComposition(
614 [in] ITfCompositionView *pComposition,
615 [in] ITfRange *pRangeNew);
616
617 HRESULT OnEndComposition(
618 [in] ITfCompositionView *pComposition);
619 };
620
621 [
622 object,
623 uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744),
624 pointer_default(unique)
625 ]
626 interface IEnumTfLanguageProfiles : IUnknown
627 {
628 HRESULT Clone(
629 [out] IEnumTfLanguageProfiles **ppEnum);
630
631 HRESULT Next(
632 [in] ULONG ulCount,
633 [out, size_is(ulCount), length_is(*pcFetch)] TF_LANGUAGEPROFILE *pProfile,
634 [out] ULONG *pcFetch);
635
636 HRESULT Reset();
637
638 HRESULT Skip(
639 [in] ULONG ulCount);
640 };
641
642 [
643 object,
644 local,
645 uuid(aa80e7f7-2021-11d2-93e0-0060b067b86e),
646 pointer_default(unique)
647 ]
648 interface ITfTextInputProcessor : IUnknown
649 {
650 HRESULT Activate(
651 [in] ITfThreadMgr *ptim,
652 [in] TfClientId tid);
653
654 HRESULT Deactivate();
655 };
656
657 [
658 object,
659 uuid(aa80e80e-2021-11d2-93e0-0060b067b86e),
660 pointer_default(unique)
661 ]
662 interface ITfThreadMgrEventSink : IUnknown
663 {
664 HRESULT OnInitDocumentMgr(
665 [in] ITfDocumentMgr *pdim);
666
667 HRESULT OnUninitDocumentMgr(
668 [in] ITfDocumentMgr *pdim);
669
670 HRESULT OnSetFocus(
671 [in] ITfDocumentMgr *pdimFocus,
672 [in] ITfDocumentMgr *pdimPrevFocus);
673
674 HRESULT OnPushContext(
675 [in] ITfContext *pic);
676
677 HRESULT OnPopContext(
678 [in] ITfContext *pic);
679 };
680
681 [
682 object,
683 local,
684 uuid(aa80e7f0-2021-11d2-93e0-0060b067b86e),
685 pointer_default(unique)
686 ]
687 interface ITfKeystrokeMgr : IUnknown
688 {
689 HRESULT AdviseKeyEventSink(
690 [in] TfClientId tid,
691 [in] ITfKeyEventSink *pSink,
692 [in] BOOL fForeground);
693
694 HRESULT UnadviseKeyEventSink(
695 [in] TfClientId tid);
696
697 HRESULT GetForeground(
698 [out] CLSID *pclsid);
699
700 HRESULT TestKeyDown(
701 [in] WPARAM wParam,
702 [in] LPARAM lParam,
703 [out] BOOL *pfEaten);
704
705 HRESULT TestKeyUp(
706 [in] WPARAM wParam,
707 [in] LPARAM lParam,
708 [out] BOOL *pfEaten);
709
710 HRESULT KeyDown(
711 [in] WPARAM wParam,
712 [in] LPARAM lParam,
713 [out] BOOL *pfEaten);
714
715 HRESULT KeyUp(
716 [in] WPARAM wParam,
717 [in] LPARAM lParam,
718 [out] BOOL *pfEaten);
719
720 HRESULT GetPreservedKey(
721 [in] ITfContext *pic,
722 [in] const TF_PRESERVEDKEY *pprekey,
723 [out] GUID *pguid);
724
725 HRESULT IsPreservedKey(
726 [in] REFGUID rguid,
727 [in] const TF_PRESERVEDKEY *pprekey,
728 [out] BOOL *pfRegistered);
729
730 HRESULT PreserveKey(
731 [in] TfClientId tid,
732 [in] REFGUID rguid,
733 [in] const TF_PRESERVEDKEY *prekey,
734 [in, size_is(cchDesc)] const WCHAR *pchDesc,
735 [in] ULONG cchDesc);
736
737 HRESULT UnpreserveKey(
738 [in] REFGUID rguid,
739 [in] const TF_PRESERVEDKEY *pprekey);
740
741 HRESULT SetPreservedKeyDescription(
742 [in] REFGUID rguid,
743 [in, size_is(cchDesc)] const WCHAR *pchDesc,
744 [in] ULONG cchDesc);
745
746 HRESULT GetPreservedKeyDescription(
747 [in] REFGUID rguid,
748 [out] BSTR *pbstrDesc);
749
750 HRESULT SimulatePreservedKey(
751 [in] ITfContext *pic,
752 [in] REFGUID rguid,
753 [out] BOOL *pfEaten);
754 };
755
756 [
757 object,
758 local,
759 uuid(aa80e7f5-2021-11d2-93e0-0060b067b86e),
760 pointer_default(unique)
761 ]
762 interface ITfKeyEventSink : IUnknown
763 {
764 HRESULT OnSetFocus(
765 [in] BOOL fForeground);
766
767 HRESULT OnTestKeyDown(
768 [in] ITfContext *pic,
769 [in] WPARAM wParam,
770 [in] LPARAM lParam,
771 [out] BOOL *pfEaten);
772
773 HRESULT OnTestKeyUp(
774 [in] ITfContext *pic,
775 [in] WPARAM wParam,
776 [in] LPARAM lParam,
777 [out] BOOL *pfEaten);
778
779 HRESULT OnKeyDown(
780 [in] ITfContext *pic,
781 [in] WPARAM wParam,
782 [in] LPARAM lParam,
783 [out] BOOL *pfEaten);
784
785 HRESULT OnKeyUp(
786 [in] ITfContext *pic,
787 [in] WPARAM wParam,
788 [in] LPARAM lParam,
789 [out] BOOL *pfEaten);
790
791 HRESULT OnPreservedKey(
792 [in] ITfContext *pic,
793 [in] REFGUID rguid,
794 [out] BOOL *pfEaten);
795 };
796
797 [
798 object,
799 local,
800 uuid(8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c),
801 pointer_default(unique)
802 ]
803 interface ITfMessagePump : IUnknown
804 {
805 HRESULT PeekMessageA(
806 [out] LPMSG pMsg,
807 [in] HWND hwnd,
808 [in] UINT wMsgFilterMin,
809 [in] UINT wMsgFilterMax,
810 [in] UINT wRemoveMsg,
811 [out] BOOL *pfResult);
812
813 HRESULT GetMessageA(
814 [out] LPMSG pMsg,
815 [in] HWND hwnd,
816 [in] UINT wMsgFilterMin,
817 [in] UINT wMsgFilterMax,
818 [out] BOOL *pfResult);
819
820 HRESULT PeekMessageW(
821 [out] LPMSG pMsg,
822 [in] HWND hwnd,
823 [in] UINT wMsgFilterMin,
824 [in] UINT wMsgFilterMax,
825 [in] UINT wRemoveMsg,
826 [out] BOOL *pfResult);
827
828 HRESULT GetMessageW(
829 [out] LPMSG pMsg,
830 [in] HWND hwnd,
831 [in] UINT wMsgFilterMin,
832 [in] UINT wMsgFilterMax,
833 [out] BOOL *pfResult);
834 };
835
836 [
837 object,
838 local,
839 uuid(d60a7b49-1b9f-4be2-b702-47e9dc05dec3),
840 pointer_default(unique)
841 ]
842 interface ITfClientId : IUnknown
843 {
844 HRESULT GetClientId(
845 [in] REFCLSID rclsid,
846 [out] TfClientId *ptid);
847 };
848
849 [
850 object,
851 uuid(43c9fe15-f494-4c17-9de2-b8a4ac350aa8),
852 pointer_default(unique)
853 ]
854 interface ITfLanguageProfileNotifySink : IUnknown
855 {
856 HRESULT OnLanguageChange(
857 [in] LANGID langid,
858 [out] BOOL *pfAccept);
859
860 HRESULT OnLanguageChanged();
861 }
862
863 [
864 object,
865 uuid(aa80e803-2021-11d2-93e0-0060b067b86e),
866 pointer_default(unique)
867 ]
868 interface ITfEditSession : IUnknown
869 {
870 HRESULT DoEditSession(
871 [in] TfEditCookie ec);
872 }
873
874 [
875 object,
876 uuid(aa80e7ff-2021-11d2-93e0-0060b067b86e),
877 pointer_default(unique)
878 ]
879 interface ITfRange : IUnknown
880 {
881 const WCHAR TF_CHAR_EMBEDDED = TS_CHAR_EMBEDDED;
882
883 typedef [uuid(cf610f06-2882-46f6-abe5-298568b664c4)] enum { TF_GRAVITY_BACKWARD = 0, TF_GRAVITY_FORWARD = 1 } TfGravity;
884
885 typedef [uuid(1e512533-bbdc-4530-9a8e-a1dc0af67468)] enum { TF_SD_BACKWARD = 0, TF_SD_FORWARD = 1 } TfShiftDir;
886
887 const DWORD TF_HF_OBJECT = 1;
888 const DWORD TF_TF_MOVESTART = 1;
889 const DWORD TF_TF_IGNOREEND = 2;
890 const DWORD TF_ST_CORRECTION = 1;
891 const DWORD TF_IE_CORRECTION = 1;
892
893 typedef [uuid(49930d51-7d93-448c-a48c-fea5dac192b1)] struct TF_HALTCOND
894 {
895 ITfRange *pHaltRange;
896 TfAnchor aHaltPos;
897 DWORD dwFlags;
898 } TF_HALTCOND;
899
900 HRESULT GetText(
901 [in] TfEditCookie ec,
902 [in] DWORD dwFlags,
903 [out, size_is(cchMax), length_is(*pcch)] WCHAR *pchText,
904 [in] ULONG cchMax,
905 [out] ULONG *pcch);
906
907 HRESULT SetText(
908 [in] TfEditCookie ec,
909 [in] DWORD dwFlags,
910 [in, size_is(cch), unique] const WCHAR *pchText,
911 [in] LONG cch);
912
913 HRESULT GetFormattedText(
914 [in] TfEditCookie ec,
915 [out] IDataObject **ppDataObject);
916
917 HRESULT GetEmbedded(
918 [in] TfEditCookie ec,
919 [in] REFGUID rguidService,
920 [in] REFIID riid,
921 [out, iid_is(riid)] IUnknown **ppunk);
922
923 HRESULT InsertEmbedded(
924 [in] TfEditCookie ec,
925 [in] DWORD dwFlags,
926 [in] IDataObject *pDataObject);
927
928 HRESULT ShiftStart(
929 [in] TfEditCookie ec,
930 [in] LONG cchReq,
931 [out] LONG *pcch,
932 [in, unique] const TF_HALTCOND *pHalt);
933
934 HRESULT ShiftEnd(
935 [in] TfEditCookie ec,
936 [in] LONG cchReq,
937 [out] LONG *pcch,
938 [in, unique] const TF_HALTCOND *pHalt);
939
940 HRESULT ShiftStartToRange(
941 [in] TfEditCookie ec,
942 [in] ITfRange *pRange,
943 [in] TfAnchor aPos);
944
945 HRESULT ShiftEndToRange(
946 [in] TfEditCookie ec,
947 [in] ITfRange *pRange,
948 [in] TfAnchor aPos);
949
950 HRESULT ShiftStartRegion(
951 [in] TfEditCookie ec,
952 [in] TfShiftDir dir,
953 [out] BOOL *pfNoRegion);
954
955 HRESULT ShiftEndRegion(
956 [in] TfEditCookie ec,
957 [in] TfShiftDir dir,
958 [out] BOOL *pfNoRegion);
959
960 HRESULT IsEmpty(
961 [in] TfEditCookie ec,
962 [out] BOOL *pfEmpty);
963
964 HRESULT Collapse(
965 [in] TfEditCookie ec,
966 [in] TfAnchor aPos);
967
968 HRESULT IsEqualStart(
969 [in] TfEditCookie ec,
970 [in] ITfRange *pWith,
971 [in] TfAnchor aPos,
972 [out] BOOL *pfEqual);
973
974 HRESULT IsEqualEnd(
975 [in] TfEditCookie ec,
976 [in] ITfRange *pWith,
977 [in] TfAnchor aPos,
978 [out] BOOL *pfEqual);
979
980 HRESULT CompareStart(
981 [in] TfEditCookie ec,
982 [in] ITfRange *pWith,
983 [in] TfAnchor aPos,
984 [out] LONG *plResult);
985
986 HRESULT CompareEnd(
987 [in] TfEditCookie ec,
988 [in] ITfRange *pWith,
989 [in] TfAnchor aPos,
990 [out] LONG *plResult);
991
992 HRESULT AdjustForInsert(
993 [in] TfEditCookie ec,
994 [in] ULONG cchInsert,
995 [out] BOOL *pfInsertOk);
996
997 HRESULT GetGravity(
998 [out] TfGravity *pgStart,
999 [out] TfGravity *pgEnd);
1000
1001 HRESULT SetGravity(
1002 [in] TfEditCookie ec,
1003 [in] TfGravity gStart,
1004 [in] TfGravity gEnd);
1005
1006 HRESULT Clone(
1007 [out] ITfRange **ppClone);
1008
1009 HRESULT GetContext(
1010 [out] ITfContext **ppContext);
1011 };
1012
1013 [
1014 object,
1015 uuid(057a6296-029b-4154-b79a-0d461d4ea94c),
1016 pointer_default(unique)
1017 ]
1018 interface ITfRangeACP : ITfRange
1019 {
1020 HRESULT GetExtent([out] LONG *pacpAnchor,
1021 [out] LONG *pcch);
1022
1023 HRESULT SetExtent([in] LONG acpAnchor,
1024 [in] LONG cch);
1025 }
1026
1027 [
1028 object,
1029 uuid(55ce16ba-3014-41c1-9ceb-fade1446ac6c),
1030 pointer_default(unique)
1031 ]
1032 interface ITfInsertAtSelection : IUnknown
1033 {
1034 const DWORD TF_IAS_NOQUERY = 0x1;
1035 const DWORD TF_IAS_QUERYONLY = 0x2;
1036 const DWORD TF_IAS_NO_DEFAULT_COMPOSITION = 0x80000000;
1037
1038 HRESULT InsertTextAtSelection(
1039 [in] TfEditCookie ec,
1040 [in] DWORD dwFlags,
1041 [in, size_is(cch)] const WCHAR *pchText,
1042 [in] LONG cch,
1043 [out] ITfRange **ppRange);
1044
1045 HRESULT InsertEmbeddedAtSelection(
1046 [in] TfEditCookie ec,
1047 [in] DWORD dwFlags,
1048 [in] IDataObject *pDataObject,
1049 [out] ITfRange **ppRange);
1050 };
1051
1052 [
1053 object,
1054 uuid(6834b120-88cb-11d2-bf45-00105a2799b5),
1055 pointer_default(unique)
1056 ]
1057 interface ITfPropertyStore : IUnknown
1058 {
1059 const DWORD TF_TU_CORRECTION = 0x1;
1060
1061 HRESULT GetType([out] GUID *pguid);
1062
1063 HRESULT GetDataType([out] DWORD *pdwReserved);
1064
1065 HRESULT GetData([out] VARIANT *pvarValue);
1066
1067 HRESULT OnTextUpdated(
1068 [in] DWORD dwFlags,
1069 [in] ITfRange *pRangeNew,
1070 [out] BOOL *pfAccept);
1071
1072 HRESULT Shrink(
1073 [in] ITfRange *pRangeNew,
1074 [out] BOOL *pfFree);
1075
1076 HRESULT Divide(
1077 [in] ITfRange *pRangeThis,
1078 [in] ITfRange *pRangeNew,
1079 [out] ITfPropertyStore **ppPropStore);
1080
1081 HRESULT Clone(
1082 [out] ITfPropertyStore **pPropStore);
1083
1084 HRESULT GetPropertyRangeCreator(
1085 [out] CLSID *pclsid);
1086
1087 HRESULT Serialize(
1088 [in] IStream *pStream,
1089 [out] ULONG *pcb);
1090 }
1091
1092 [
1093 object,
1094 uuid(f99d3f40-8e32-11d2-bf46-00105a2799b5),
1095 pointer_default(unique)
1096 ]
1097 interface IEnumTfRanges : IUnknown
1098 {
1099 HRESULT Clone([out] IEnumTfRanges **ppEnum);
1100
1101 HRESULT Next(
1102 [in] ULONG ulCount,
1103 [out, size_is(ulCount), length_is(*pcFetched)] ITfRange **ppRange,
1104 [out] ULONG *pcFetched);
1105
1106 HRESULT Reset();
1107
1108 HRESULT Skip(ULONG ulCount);
1109 }
1110
1111 [
1112 object,
1113 uuid(5efd22Ba-7838-46cb-88e2-cadb14124f8f),
1114 pointer_default(unique)
1115 ]
1116 interface IEnumITfCompositionView : IUnknown
1117 {
1118 HRESULT Clone([out] IEnumITfCompositionView **ppEnum);
1119
1120 HRESULT Next(
1121 [in] ULONG ulCount,
1122 [out, size_is(ulCount), length_is(*pcFetched)] ITfCompositionView **rgCompositionView,
1123 [out] ULONG *pcFetched);
1124
1125 HRESULT Reset();
1126
1127 HRESULT Skip([in] ULONG ulCount);
1128 }
1129
1130 [
1131 object,
1132 uuid(20168d64-5a8f-4a5a-b7bd-cfa29f4D0fd9),
1133 pointer_default(unique)
1134 ]
1135 interface ITfComposition : IUnknown
1136 {
1137 HRESULT GetRange([out] ITfRange **ppRange);
1138
1139 HRESULT ShiftStart(
1140 [in] TfEditCookie ecWrite,
1141 [in] ITfRange *pNewStart);
1142
1143 HRESULT ShiftEnd(
1144 [in] TfEditCookie ecWrite,
1145 [in] ITfRange *pNewEnd);
1146
1147 HRESULT EndComposition([in] TfEditCookie ecWrite);
1148 }
1149
1150 [
1151 object,
1152 uuid(a781718c-579a-4b15-a280-32b8577acc5e),
1153 pointer_default(unique)
1154 ]
1155 interface ITfCompositionSink : IUnknown
1156 {
1157 HRESULT OnCompositionTerminated(
1158 [in] TfEditCookie ecWrite,
1159 [in] ITfComposition *pComposition);
1160 }
1161
1162 [
1163 object,
1164 uuid(d40C8aae-aC92-4fc7-9a11-0ee0e23aa39b),
1165 pointer_default(unique)
1166 ]
1167 interface ITfContextComposition : IUnknown
1168 {
1169 HRESULT StartComposition(
1170 [in] TfEditCookie ecWrite,
1171 [in] ITfRange *pCompositionRange,
1172 [in] ITfCompositionSink *pSink,
1173 [out] ITfComposition **ppComposition);
1174
1175 HRESULT EnumCompositions([out] IEnumITfCompositionView **ppEnum);
1176
1177 HRESULT FindComposition(
1178 [in] TfEditCookie ecRead,
1179 [in] ITfRange *pTestRange,
1180 [out] IEnumITfCompositionView **ppEnum);
1181
1182 HRESULT TakeOwnership(
1183 [in] TfEditCookie ecWrite,
1184 [in] ITfCompositionView *pComposition,
1185 [in] ITfCompositionSink *pSink,
1186 [out] ITfComposition **ppComposition);
1187 }
1188
1189 [
1190 object,
1191 uuid(86462810-593b-4916-9764-19c08e9ce110),
1192 pointer_default(unique)
1193 ]
1194 interface ITfContextOwnerCompositionServices : ITfContextComposition
1195 {
1196 HRESULT TerminateComposition([in] ITfCompositionView *pComposition);
1197 }
1198
1199 [
1200 object,
1201 uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53),
1202 pointer_default(unique)
1203 ]
1204 interface ITfReadOnlyProperty : IUnknown
1205 {
1206 HRESULT GetType([out] GUID *pguid);
1207
1208 HRESULT EnumRanges(
1209 [in] TfEditCookie ec,
1210 [out] IEnumTfRanges **ppEnum,
1211 [in] ITfRange *pTargetRange);
1212
1213 HRESULT GetValue(
1214 [in] TfEditCookie ec,
1215 [in] ITfRange *pRange,
1216 [out] VARIANT *pvarValue);
1217
1218 HRESULT GetContext([out] ITfContext **ppContext);
1219 }
1220
1221 [
1222 object,
1223 uuid(e2449660-9542-11d2-bf46-00105a2799b5),
1224 pointer_default(unique)
1225 ]
1226 interface ITfProperty : ITfReadOnlyProperty
1227 {
1228 HRESULT FindRange(
1229 [in] TfEditCookie ec,
1230 [in] ITfRange *pRange,
1231 [out] ITfRange **ppRange,
1232 [in] TfAnchor aPos);
1233
1234 HRESULT SetValueStore(
1235 [in] TfEditCookie ec,
1236 [in] ITfRange *pRange,
1237 [in] ITfPropertyStore *pPropStore);
1238
1239 HRESULT SetValue(
1240 [in] TfEditCookie ec,
1241 [in] ITfRange *pRange,
1242 [in] const VARIANT *pvarValue);
1243
1244 HRESULT Clear(
1245 [in] TfEditCookie ec,
1246 [in] ITfRange *pRange);
1247 }
1248
1249 [
1250 object,
1251 uuid(bb08f7a9-607a-4384-8623-056892b64371),
1252 pointer_default(unique)
1253 ]
1254 interface ITfCompartment : IUnknown
1255 {
1256 HRESULT SetValue(
1257 [in] TfClientId tid,
1258 [in] const VARIANT *pvarValue);
1259
1260 HRESULT GetValue(
1261 [out] VARIANT *pvarValue);
1262 };
1263
1264 [
1265 object,
1266 uuid(7dcf57ac-18ad-438b-824d-979bffb74b7c),
1267 pointer_default(unique)
1268 ]
1269 interface ITfCompartmentMgr : IUnknown
1270 {
1271 HRESULT GetCompartment(
1272 [in] REFGUID rguid,
1273 [out] ITfCompartment **ppcomp);
1274
1275 HRESULT ClearCompartment(
1276 [in] TfClientId tid,
1277 [in] REFGUID rguid);
1278
1279 HRESULT EnumCompartments(
1280 [out] IEnumGUID **ppEnum);
1281 };
1282
1283 [
1284 object,
1285 uuid(743abd5f-f26d-48df-8cc5-238492419b64),
1286 pointer_default(unique)
1287 ]
1288 interface ITfCompartmentEventSink : IUnknown
1289 {
1290 HRESULT OnChange(
1291 [in] REFGUID rguid);
1292 }
1293
1294 [
1295 object,
1296 uuid(8f1a7ea6-1654-4502-a86e-b2902344d507),
1297 pointer_default(unique)
1298 ]
1299 interface IEnumTfContexts : IUnknown
1300 {
1301 HRESULT Clone(
1302 [out] IEnumTfContexts **ppEnum);
1303
1304 HRESULT Next(
1305 [in] ULONG ulCount,
1306 [out, size_is(ulCount), length_is(*pcFetched)] ITfContext **rgContext,
1307 [out] ULONG *pcFetched);
1308
1309 HRESULT Reset();
1310
1311 HRESULT Skip(
1312 [in] ULONG ulCount);
1313 };
1314
1315 [
1316 object,
1317 uuid(aa80e808-2021-11d2-93e0-0060b067b86e),
1318 pointer_default(unique)
1319 ]
1320 interface IEnumTfDocumentMgrs : IUnknown
1321 {
1322 HRESULT Clone(
1323 [out] IEnumTfDocumentMgrs **ppEnum);
1324
1325 HRESULT Next(
1326 [in] ULONG ulCount,
1327 [out, size_is(ulCount), length_is(*pcFetched)] ITfDocumentMgr **rgDocumentMgr,
1328 [out] ULONG *pcFetched);
1329
1330 HRESULT Reset();
1331
1332 HRESULT Skip(
1333 [in] ULONG ulCount);
1334 };
1335
1336 [
1337 object,
1338 uuid(73131f9c-56a9-49dd-b0ee-d046633f7528),
1339 pointer_default(unique)
1340 ]
1341 interface ITfSourceSingle : IUnknown
1342 {
1343 HRESULT AdviseSingleSink(
1344 [in] TfClientId tid,
1345 [in] REFIID riid,
1346 [in, iid_is(riid)] IUnknown *punk);
1347
1348 HRESULT UnadviseSingleSink(
1349 [in] TfClientId tid,
1350 [in] REFIID riid);
1351 };