summaryrefslogblamecommitdiffstats
path: root/dxsdk/Include/DShowIDL/Mstvca.idl
blob: a9b257d857226a9648d0023c2c40cbd4c867b054 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840







































































































































































































































































































































































































































































































































































































































































































































































































































































                                                                                                                                                                                                                                               
// MSTvCA.idl : IDL source for MSTvCA.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (CA.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"

/*	[
		object,
		dual,
		uuid(49a32d3c-7d85-11d2-8895-00c04f794967),
		helpstring("ITuneRequest Interface"),
		pointer_default(unique)
	]
	interface ITuneRequest : IDispatch
	{
	};
*/
import "tuner.idl";			// includes the whole BDA world!  Yecko!

	interface ICAManager;
	interface ICARequest;
	interface ICAPolicy;
	interface ICAPolicies;
	interface ICAPoliciesInternal;
	interface ICAToll;
	interface ICATolls;
	interface ICATollsInternal;
	interface ICADenial;
	interface ICADenials;
	interface ICAOffer;
	interface ICAOffers;
	interface ICAComponent;
	interface ICAComponents;

#define COLLECTID_Item				0
#define COLLECTID_Count				1
#define COLLECTID_Add				2
#define COLLECTID_Remove			3
#define COLLECTID_AddNew			4
#define COLLECTID_CountDenied		5		// ICADenials
#define COLLECTID_CountSelected		6		// ICADenials
#define COLLECTID_PaySelectedTolls	7		// ICADenials

typedef enum 
{
	Unselected		= 0,
	Selected		= 1
} CATollState;

typedef enum 
{
	Denied			 = 0,
	Transient		 = 1,
//	Allowed			 = 2,
	DescriptionShort = 10,			// one of the description fields changed
	DescriptionLong  = 11,			//    via a ICADenial::put_Description() 
	DescriptionHTML  = 12,			// 
	DescriptionXML   = 13			//    (keep these current+10 with list below...)
} CADenialState;

typedef enum 	
{
	Short		= 0,		// must be numeric, starting at 0.  (Used as array index).
	Long		= 1,		//  in approximatly order of length in bytes
	URL			= 2,
	HTML		= 3,
	XML			= 4,
	kDescEnd	= 5			// invalid format, 1+ last real one (Used as array length).
} CADescFormat;


typedef enum 
{
	Request  = 1,
	ComponentX = 2,
	Offers   = 4,
	PaidTolls = 8,
	Policies  = 16,
	Standard  = 15,		// all put the policies
	All = 31			// all
} CAUIDisplayFields;

			// ---------------------------------------------------------------
			//   if add methods to ICAManagerInternal, be sure to add MAGICCALL in CAManagerProxy too..
			// ---------------------------------------------------------------

	[
		object,
		uuid(11166301-DF8A-463a-B620-7BEC23542010),
		dual,											// Helpers are Dual, IUnknown... so see from VB
		hidden, restricted, 
		helpstring("ICAManagerInternal Interface"),
		pointer_default(unique)
	]
	interface ICAManagerInternal : IUnknown
	{
		[		  id(1),   helpstring("method Save")]						HRESULT Save();
		[		  id(2),   helpstring("method Load")]						HRESULT Load();
		[propput, id(3),   helpstring("property MarkDirty")]				HRESULT MarkDirty([in] BOOL fDirty);
		[propget, id(3),   helpstring("property MarkDirty")]				HRESULT MarkDirty([out, retval] BOOL *pfDirty);
		[propput, id(4),   helpstring("property TuneRequest")]				HRESULT TuneRequest([in] ITuneRequest *ptunereq);
		[		  id(5),   helpstring("method GetDefaultUI")]				HRESULT GetDefaultUI([out] HWND *phwnd);
		[		  id(6),   helpstring("method SetDefaultUI")]				HRESULT SetDefaultUI([in] HWND hwnd);
					// return the main CAManager object, not the proxy one.
		[propget, id(7),   helpstring("property CAManagerMain")]			HRESULT CAManagerMain([out,retval] ICAManager **ppManagerMain);
		[propput, id(8),   helpstring("property BroadcastEventService")]	HRESULT BroadcastEventService([in] IBroadcastEvent *pBroadcastEventService);
		[propget, id(8),   helpstring("property BroadcastEventService")]	HRESULT BroadcastEventService([out, retval] IBroadcastEvent **ppBroadcastEventService);
        [         id(9),   helpstring("method DisplayDefaultUI")]           HRESULT DisplayDefaultUI([in] VARIANT_BOOL fDisplay);
        [         id(10),  helpstring("method EnableDefaultUIPayTollsButton")]  HRESULT EnableDefaultUIPayTollsButton([in] VARIANT_BOOL fEnabled);
        [         id(11),  helpstring("method UpdateDefaultUIForToll")]     HRESULT UpdateDefaultUIForToll([in] ICAToll *pToll,[in] CATollState enState);
		[propput, id(12),  helpstring("property TuneRequestInt")]			HRESULT TuneRequestInt([in] ITuneRequest *ptunereq);
        [         id(13),  helpstring("method AddDenialsFor")]				HRESULT AddDenialsFor([in] IUnknown *pUnk);     // see also ICAManager::get_DenialsFor()
        [         id(14),  helpstring("method RemoveDenialsFor")]           HRESULT RemoveDenialsFor([in] IUnknown *pUnk);

		[		  id(2201),helpstring("method NotifyRequestActivated")]		HRESULT NotifyRequestActivated([in] ICARequest *pReq);
		[		  id(2202),helpstring("method NotifyRequestDeactivated")]	HRESULT NotifyRequestDeactivated([in] ICARequest *pReq);
		[		  id(2203),helpstring("method NotifyOfferAdded")]			HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2204),helpstring("method NotifyOfferRemoved")]			HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2205),helpstring("method NotifyPolicyAdded")]			HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2206),helpstring("method NotifyPolicyRemoved")]		HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2207),helpstring("method NotifyRequestDenialAdded")]	HRESULT NotifyRequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2208),helpstring("method NotifyRequestDenialRemoved")]	HRESULT NotifyRequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2209),helpstring("method NotifyDenialTollAdded")]		HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2210),helpstring("method NotifyDenialTollRemoved")]	HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2211),helpstring("method NotifyTollDenialAdded")]		HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2212),helpstring("method NotifyTollDenialRemoved")]	HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2213),helpstring("method NotifyOfferTollAdded")]		HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2214),helpstring("method NotifyOfferTollRemoved")]		HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[         id(2215),helpstring("method NotifyTollStateChanged")]		HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
		[         id(2216),helpstring("method NotifyDenialStateChanged")]	HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
		[         id(2217),helpstring("method NotifyComponentDenialAdded")]		HRESULT NotifyComponentDenialAdded([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[         id(2218),helpstring("method NotifyComponentDenialRemoved")]	HRESULT NotifyComponentDenialRemoved([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);

	};

	[
		object,
		uuid(11166302-DF8A-463a-B620-7BEC23542010),
		dual,											// Helpers are Dual, IUnknown... so see from VB
		hidden, restricted, 
		helpstring("ICAManagerXProxy Interface"),
		pointer_default(unique)
	]
	interface ICAManagerXProxy : IUnknown
	{
        [propget, id(1),   helpstring("property PunkCAManagerProxy")]                   HRESULT PunkCAManagerProxy([out,retval] IUnknown **ppUnkCAManagerProxy);
		[		  id(2201),helpstring("method NotifyRequestActivated_XProxy")]          HRESULT NotifyRequestActivated_XProxy([in] ICARequest *pReq);
		[		  id(2202),helpstring("method NotifyRequestDeactivated_XProxy")]        HRESULT NotifyRequestDeactivated_XProxy([in] ICARequest *pReq);
		[		  id(2203),helpstring("method NotifyOfferAdded_XProxy")]                HRESULT NotifyOfferAdded_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2204),helpstring("method NotifyOfferRemoved_XProxy")]              HRESULT NotifyOfferRemoved_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2205),helpstring("method NotifyPolicyAdded_XProxy")]               HRESULT NotifyPolicyAdded_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2206),helpstring("method NotifyPolicyRemoved_XProxy")]             HRESULT NotifyPolicyRemoved_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2207),helpstring("method NotifyRequestDenialAdded_XProxy")]        HRESULT NotifyRequestDenialAdded_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2208),helpstring("method NotifyRequestDenialRemoved_XProxy")]      HRESULT NotifyRequestDenialRemoved_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2209),helpstring("method NotifyDenialTollAdded_XProxy")]           HRESULT NotifyDenialTollAdded_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2210),helpstring("method NotifyDenialTollRemoved_XProxy")]         HRESULT NotifyDenialTollRemoved_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2211),helpstring("method NotifyTollDenialAdded_XProxy")]           HRESULT NotifyTollDenialAdded_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2212),helpstring("method NotifyTollDenialRemoved_XProxy")]         HRESULT NotifyTollDenialRemoved_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2213),helpstring("method NotifyOfferTollAdded_XProxy")]            HRESULT NotifyOfferTollAdded_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2214),helpstring("method NotifyOfferTollRemoved_XProxy")]          HRESULT NotifyOfferTollRemoved_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[         id(2215),helpstring("method NotifyTollStateChanged_XProxy")]          HRESULT NotifyTollStateChanged_XProxy([in] ICAToll *pToll, [in] CATollState enStateLast);
		[         id(2216),helpstring("method NotifyDenialStateChanged_XProxy")]        HRESULT NotifyDenialStateChanged_XProxy([in] ICADenial *pDenial, [in] CADenialState enStateLast);
		[         id(2217),helpstring("method NotifyComponentDenialAdded_XProxy")]      HRESULT NotifyComponentDenialAdded_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[         id(2218),helpstring("method NotifyComponentDenialRemoved_XProxy")]    HRESULT NotifyComponentDenialRemoved_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
	};

			// ---------------------------------------------------------------


			// ---------------------------------------------------------------

	[
		object,
		uuid(11166420-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAPolicies Interface"),
		pointer_default(unique)
	]
	interface ICAPolicies : IDispatch
	{
        [propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
        [propget, id(COLLECTID_Count)]			  HRESULT Count([out, retval] long *Count);
        [propget, id(COLLECTID_Item)]			  HRESULT Item([in] VARIANT Index, [out, retval] ICAPolicy **ppPolicy);
        [         id(COLLECTID_Add)]			  HRESULT Add([in] ICAPolicy *pPolicy);
        [         id(COLLECTID_Remove)]			  HRESULT Remove([in] VARIANT Index);
	};

	[	object,
		uuid(11166421-DF8A-463a-B620-7BEC23542010),
		dual,
		hidden, restricted, 
		helpstring("ICAPoliciesInternal Interface"),
		pointer_default(unique)
	]
	interface ICAPoliciesInternal : IUnknown
	{
		 [id(1),helpstring("method SetCAManager")]	HRESULT SetCAManager([in] ICAManager *pManager);
		 [id(2),helpstring("method CheckRequest")]	HRESULT CheckRequest([in] ICARequest *pReq);
	};

			// ---------------------------------------------------------------

	[
		object,
		uuid(11166430-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICATolls Interface"),
		pointer_default(unique)
	]
	interface ICATolls : IDispatch
	{
        [propget, id(DISPID_NEWENUM), restricted]	HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
        [propget, id(COLLECTID_Count)]				HRESULT Count([out, retval] long *Count);
        [propget, id(COLLECTID_Item)]				HRESULT Item([in] VARIANT Index, [out, retval] ICAToll **ppToll);
        [	      id(COLLECTID_Add)]				HRESULT Add([in] ICAToll *pToll);
        [	      id(COLLECTID_Remove)]				HRESULT Remove([in] VARIANT Index);
	};

	[
		object,
		uuid(11166431-DF8A-463a-B620-7BEC23542010),
		dual,
		hidden, restricted, 
		helpstring("ICATolls Internal Interface"),
		pointer_default(unique)
	]
	interface ICATollsInternal : IUnknown			// workaround for not being able to get _ICAResDenialEvents to work
	{				
		 [		  id(1),helpstring("method SetCAManager")]					HRESULT SetCAManager([in] ICAManager *pManager);
		 [		  id(2),helpstring("method GetCAManager")]					HRESULT GetCAManager([out] ICAManager **ppManager);
 		 [		  id(3),helpstring("method SetMustPersist")]				HRESULT SetMustPersist([in] BOOL fMustPersist);
 		 [		  id(4),helpstring("method Save")]							HRESULT Save([in] IStorage *pstore,[in] BSTR bstrPrefix);
		 [		  id(5),helpstring("method Load")]							HRESULT Load([in] IStorage *pstore,[in] BSTR bstrPrefix);
         [	      id(6),helpstring("method NotifyStateChanged")]			HRESULT NotifyStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
         [	      id(7),helpstring("method NotifyTollSelectionChanged")]	HRESULT NotifyTollSelectionChanged([in] ICAToll *pToll, [in] BOOL fSelected);
  	};
			// ---------------------------------------------------------------


	[
		object,
		uuid(11166440-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICADenials Interface"),
		pointer_default(unique)
	]
	interface ICADenials : IDispatch
	{
        [propget, id(DISPID_NEWENUM), restricted]						HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
        [propget, id(COLLECTID_Count) ]									HRESULT Count([out, retval] long *Count);
        [propget, id(COLLECTID_Item)]									HRESULT Item([in] VARIANT Index, [out, retval] ICADenial **ppDenial);
		[propget, id(COLLECTID_AddNew), helpstring("property AddNew")]	HRESULT AddNew([in] ICAPolicy *ppolicy, [in] BSTR bstrShortDesc, [in] IUnknown *pUnkDeniedObject, [in] long enDenialState, [out, retval] ICADenial **ppDenial);
        [         id(COLLECTID_Remove)]									HRESULT Remove([in] VARIANT Index);
        [propget, id(COLLECTID_CountDenied)]							HRESULT CountDenied([out, retval] long *Count);
        [propget, id(COLLECTID_CountSelected)]							HRESULT CountSelected([out, retval] long *Count);
        [		  id(COLLECTID_PaySelectedTolls)]						HRESULT PaySelectedTolls();
	};

	[
		object,
		uuid(11166441-DF8A-463a-B620-7BEC23542010),
		dual,
		hidden, restricted, 
		helpstring("ICADenialsInternal Interface"),
		pointer_default(unique)
	]
	interface ICADenialsInternal : IUnknown
	{
		[  id(1),helpstring("method SetCAManager")]				HRESULT SetCAManager([in] ICAManager *pManager);		
		[  id(2),helpstring("method NotifyDenialStateChanged")]	HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
 	};


			// ---------------------------------------------------------------

	[
		object,
		uuid(11166450-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAOffers Interface"),
		pointer_default(unique)
	]
	interface ICAOffers : IDispatch
	{
        [propget, id(DISPID_NEWENUM) , restricted]						HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
        [propget, id(COLLECTID_Count)]									HRESULT Count([out, retval] long *Count);
        [propget, id(COLLECTID_Item)]									HRESULT Item([in] VARIANT Index, [out, retval] ICAOffer **ppOffer);
        [propget, id(COLLECTID_AddNew), helpstring("property AddNew")]	HRESULT AddNew([in] ICAPolicy *pPolicy, [in] BSTR bstrName, [in] DATE dateStart, [in] DATE dateEnd, [out, retval] ICAOffer **ppOffer);
        [		  id(COLLECTID_Remove)]									HRESULT Remove([in] VARIANT Index);
	};

	[
		object,
		uuid(11166470-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAComponents Interface"),
		pointer_default(unique)
	]
	interface ICAComponents : IDispatch
	{
        [propget, id(DISPID_NEWENUM) , restricted]						HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
        [propget, id(COLLECTID_Count)]									HRESULT Count([out, retval] long *Count);
        [propget, id(COLLECTID_Item)]									HRESULT Item([in] VARIANT Index, [out, retval] ICAComponent **ppComponent);
  //      [	      id(COLLECTID_Add)]									HRESULT Add([in] ICAComponent *pComponent);
  //      [		  id(COLLECTID_Remove)]									HRESULT Remove([in] VARIANT Index);
	};


	[
		object,
		uuid(11166361-DF8A-463a-B620-7BEC23542010),
		dual,
		hidden,
		helpstring("ICAComponentInternal Interface"),
		pointer_default(unique)
	]
	interface ICAComponentInternal : IUnknown
	{
		[		  id(1), helpstring("method RemoveAllDenials")]	HRESULT RemoveAllDenials();
		[propget, id(2), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstrDescription);
	};
			// ---------------------------------------------------------------


  [
          object,
          uuid(860A3FE2-DED1-40E2-896C-057681A8A1A8),
          dual,
          helpstring("ICADefaultDlg Interface"),
          pointer_default(unique)
  ]
  interface ICADefaultDlg : IDispatch
  {
          [propput, id(DISPID_AUTOSIZE)]
          HRESULT AutoSize([in]VARIANT_BOOL vbool);
          [propget, id(DISPID_AUTOSIZE)]
          HRESULT AutoSize([out,retval]VARIANT_BOOL* pbool);
          [propput, id(DISPID_BACKCOLOR)]
          HRESULT BackColor([in]OLE_COLOR clr);
          [propget, id(DISPID_BACKCOLOR)]
          HRESULT BackColor([out,retval]OLE_COLOR* pclr);
          [propput, id(DISPID_BACKSTYLE)]
          HRESULT BackStyle([in]long style);
          [propget, id(DISPID_BACKSTYLE)]
          HRESULT BackStyle([out,retval]long* pstyle);
          [propput, id(DISPID_BORDERCOLOR)]
          HRESULT BorderColor([in]OLE_COLOR clr);
          [propget, id(DISPID_BORDERCOLOR)]
          HRESULT BorderColor([out, retval]OLE_COLOR* pclr);
          [propput, id(DISPID_BORDERSTYLE)]
          HRESULT BorderStyle([in]long style);
          [propget, id(DISPID_BORDERSTYLE)]
          HRESULT BorderStyle([out, retval]long* pstyle);
          [propput, id(DISPID_BORDERWIDTH)]
          HRESULT BorderWidth([in]long width);
          [propget, id(DISPID_BORDERWIDTH)]
          HRESULT BorderWidth([out, retval]long* width);
          [propput, id(DISPID_DRAWMODE)]
          HRESULT DrawMode([in]long mode);
          [propget, id(DISPID_DRAWMODE)]
          HRESULT DrawMode([out, retval]long* pmode);
          [propput, id(DISPID_DRAWSTYLE)]
          HRESULT DrawStyle([in]long style);
          [propget, id(DISPID_DRAWSTYLE)]
          HRESULT DrawStyle([out, retval]long* pstyle);
          [propput, id(DISPID_DRAWWIDTH)]
          HRESULT DrawWidth([in]long width);
          [propget, id(DISPID_DRAWWIDTH)]
          HRESULT DrawWidth([out, retval]long* pwidth);
          [propput, id(DISPID_FILLCOLOR)]
          HRESULT FillColor([in]OLE_COLOR clr);
          [propget, id(DISPID_FILLCOLOR)]
          HRESULT FillColor([out, retval]OLE_COLOR* pclr);
          [propput, id(DISPID_FILLSTYLE)]
          HRESULT FillStyle([in]long style);
          [propget, id(DISPID_FILLSTYLE)]
          HRESULT FillStyle([out, retval]long* pstyle);
          [propputref, id(DISPID_FONT)]
          HRESULT Font([in]IFontDisp* pFont);
          [propput, id(DISPID_FONT)]
          HRESULT Font([in]IFontDisp* pFont);
          [propget, id(DISPID_FONT)]
          HRESULT Font([out, retval]IFontDisp** ppFont);
          [propput, id(DISPID_FORECOLOR)]
          HRESULT ForeColor([in]OLE_COLOR clr);
          [propget, id(DISPID_FORECOLOR)]
          HRESULT ForeColor([out,retval]OLE_COLOR* pclr);
          [propput, id(DISPID_ENABLED)]
          HRESULT Enabled([in]VARIANT_BOOL vbool);
          [propget, id(DISPID_ENABLED)]
          HRESULT Enabled([out,retval]VARIANT_BOOL* pbool);
          [propget, id(DISPID_HWND)]
          HRESULT Window([out, retval]LONG_PTR* phwnd);			// was long* via the wizard, but doesn't compile Win64
          [propput, id(DISPID_TABSTOP)]
          HRESULT TabStop([in]VARIANT_BOOL vbool);
          [propget, id(DISPID_TABSTOP)]
          HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);
          [propput, id(DISPID_TEXT)]
          HRESULT Text([in]BSTR strText);
          [propget, id(DISPID_TEXT)]
          HRESULT Text([out, retval]BSTR* pstrText);
          [propput, id(DISPID_CAPTION)]
          HRESULT Caption([in]BSTR strCaption);
          [propget, id(DISPID_CAPTION)]
          HRESULT Caption([out,retval]BSTR* pstrCaption);
          [propput, id(DISPID_BORDERVISIBLE)]
          HRESULT BorderVisible([in]VARIANT_BOOL vbool);
          [propget, id(DISPID_BORDERVISIBLE)]
          HRESULT BorderVisible([out, retval]VARIANT_BOOL* pbool);
          [propput, id(DISPID_APPEARANCE)]
          HRESULT Appearance([in]short appearance);
          [propget, id(DISPID_APPEARANCE)]
          HRESULT Appearance([out, retval]short* pappearance);
          [propput, id(DISPID_MOUSEPOINTER)]
          HRESULT MousePointer([in]long pointer);
          [propget, id(DISPID_MOUSEPOINTER)]
          HRESULT MousePointer([out, retval]long* ppointer);
          [propputref, id(DISPID_MOUSEICON)]
          HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
          [propput, id(DISPID_MOUSEICON)]
          HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
          [propget, id(DISPID_MOUSEICON)]
          HRESULT MouseIcon([out, retval]IPictureDisp** ppMouseIcon);
          [propputref, id(DISPID_PICTURE)]
          HRESULT Picture([in]IPictureDisp* pPicture);
          [propput, id(DISPID_PICTURE)]
          HRESULT Picture([in]IPictureDisp* pPicture);
          [propget, id(DISPID_PICTURE)]
          HRESULT Picture([out, retval]IPictureDisp** ppPicture);
          [propput, id(DISPID_VALID)]
          HRESULT Valid([in]VARIANT_BOOL vbool);
          [propget, id(DISPID_VALID)]
          HRESULT Valid([out, retval]VARIANT_BOOL* pbool);
  };
			// ---------------------------------------------------------------

[
	uuid(11166000-DF8A-463a-B620-7BEC23542010),
	version(1.0),
	helpstring("Microsoft TV CA Type Library")
]
library MSTvCALib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

// ---------------------------------------------------
//			CAUTION - if Change events below, need to perform:
//					1) compile the MIDL file to generate the typelib
//					2) In VCC class view, <xxx>->Implement Connection Point (_ICA<xxx>Events)
//					      to regenerate the  CProxy_ICA<xxx>Events<> code.	
//						  Need to browse to objd\i386 directory and select MSTvCA.tlb
//					(The file MSTvCACP.h must be checked out.)	
//					Where <xxx> is Denials, Manager, Offers, Policies, Request, and Tolls

	[
		uuid(11166298-DF8A-463A-B620-7BEC23542010),
		helpstring("_ICAResDenialTreeEvents Interface")
	]
	dispinterface _ICAResDenialTreeEvents
	{
		properties:
		methods:
		[id(1),helpstring("method PaidTollSelected")]			HRESULT PaidTollSelected([in] ICAToll *pToll, [in] long fSelected);
	};


	[
		uuid(11166200-DF8A-463A-B620-7BEC23542010),
		helpstring("ICAManagerEvents Interface")
	]
	dispinterface _ICAManagerEvents
	{
		properties:
		methods:
		[id(2201),helpstring("method RequestActivated")]		HRESULT RequestActivated([in] ICARequest *pReq);
		[id(2202),helpstring("method RequestDeactivated")]		HRESULT RequestDeactivated([in] ICARequest *pReq);
		[id(2203),helpstring("method OfferAdded")]				HRESULT OfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
		[id(2204),helpstring("method OfferRemoved")]			HRESULT OfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
		[id(2205),helpstring("method PolicyAdded")]				HRESULT PolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[id(2206),helpstring("method PolicyRemoved")]			HRESULT PolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[id(2207),helpstring("method RequestDenialAdded")]		HRESULT RequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[id(2208),helpstring("method RequestDenialRemoved")]	HRESULT RequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
		[id(2209),helpstring("method DenialTollAdded")]			HRESULT DenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[id(2210),helpstring("method DenialTollRemoved")]		HRESULT DenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[id(2211),helpstring("method TollDenialAdded")]			HRESULT TollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[id(2212),helpstring("method TollDenialRemoved")]		HRESULT TollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[id(2213),helpstring("method OfferTollAdded")]			HRESULT OfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[id(2214),helpstring("method OfferTollRemoved")]		HRESULT OfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[id(2215),helpstring("method TollStateChanged")]		HRESULT TollStateChanged([in] ICAToll *pToll, [in] CATollState enState);
		[id(2216),helpstring("method DenialStateChanged")]		HRESULT DenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enState);
		[id(2217),helpstring("method ComponentDenialAdded")]	HRESULT ComponentDenialAdded([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
		[id(2218),helpstring("method ComponentDenialRemoved")]	HRESULT ComponentDenialRemoved([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
	};

	[
		uuid(11166210-DF8A-463A-B620-7BEC23542010),
		helpstring("ICARequestEvents Interface")
	]
	dispinterface _ICARequestEvents
	{
		properties:
		methods:
		[id(1), helpstring("method CheckStarted")]	HRESULT CheckStarted([in] ICARequest *pRequest);
		[id(2), helpstring("method CheckComplete")] HRESULT CheckComplete([in] ICARequest *pRequest,[in] long cDenials);
	};
	[
		uuid(11166220-DF8A-463A-B620-7BEC23542010),
		helpstring("_ICAPoliciesEvents Interface")
	]
	dispinterface _ICAPoliciesEvents
	{
		properties:
		methods:
		[id(1), helpstring("method ItemAdded")]	  HRESULT ItemAdded([in] ICAPolicy *pPolicy, long cPolicies);
		[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAPolicy *pPolicy, long cPolicies);
	};

	[
		uuid(11166230-DF8A-463A-B620-7BEC23542010),
		helpstring("ICATollsEvents Interface")
	]
	dispinterface _ICATollsEvents
	{
		properties:
		methods:
		[id(1), helpstring("method ItemAdded")]		HRESULT ItemAdded([in] ICAToll *pToll, [in] long cTolls);
		[id(2), helpstring("method ItemRemoved")]	HRESULT ItemRemoved([in] ICAToll *pToll, [in] long cTolls);
		[id(3), helpstring("method StateChanged")]	HRESULT StateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
	};


	[
		uuid(11166240-DF8A-463A-B620-7BEC23542010),
		helpstring("ICADenialsEvents Interface")
	]
	dispinterface _ICADenialsEvents
	{
		properties:
		methods:
		[id(1), helpstring("method ItemAdded")]		HRESULT ItemAdded([in] ICADenial *pDenial, [in] long cDenials);
		[id(2), helpstring("method ItemRemoved")]	HRESULT ItemRemoved([in] ICADenial *pDenial, [in] long cDenials);
		[id(3), helpstring("method StateChanged")]	HRESULT StateChanged([in] ICADenial *pDenial, [in] CADenialState enStateFrom);
	};

	[
		uuid(11166250-DF8A-463A-B620-7BEC23542010),
		helpstring("ICAOffersEvents Interface")
	]
	dispinterface _ICAOffersEvents
	{
		properties:
		methods:
		[id(1), helpstring("method ItemAdded")]		HRESULT ItemAdded([in] ICAOffer *pOffer, [in] long cOffers);
		[id(2), helpstring("method ItemRemoved")]	HRESULT ItemRemoved([in] ICAOffer *pOffer, [in] long cOffers);
	};

	[
		uuid(11166260-DF8A-463A-B620-7BEC23542010),
		helpstring("_ICAComponentsEvents Interface")
	]
	dispinterface _ICAComponentsEvents
	{
		properties:
		methods:
		[id(1), helpstring("method ItemAdded")]		HRESULT ItemAdded([in] ICAComponent *pComponent, [in] long cComponent);
		[id(2), helpstring("method ItemRemoved")]	HRESULT ItemRemoved([in] ICAComponent *pComponent, [in] long cComponent);
	};		// --------------------------------
	[
		object,
		dual,
		uuid(11166300-DF8A-463a-B620-7BEC23542010),
		helpstring("ICAManager Interface"),
		pointer_default(unique)
	]
	interface ICAManager : IDispatch
	{
		[propget, id(1),   helpstring("property Policies")]			HRESULT Policies([out, retval] ICAPolicies **ppPolicies);
		[propget, id(2),   helpstring("property ActiveRequest")]	HRESULT ActiveRequest([out, retval] ICARequest **ppRequest);
		[propget, id(3),   helpstring("property Offers")]			HRESULT Offers([out, retval] ICAOffers **ppOffers);
		[propget, id(4),   helpstring("property PaidTolls")]		HRESULT PaidTolls([out, retval] ICATolls **ppTolls);
		[propput, id(5),   helpstring("property UseDefaultUI")]		HRESULT UseDefaultUI([in] long fUseDefaultUI);
		[propget, id(5),   helpstring("property UseDefaultUI")]		HRESULT UseDefaultUI([out, retval] long *pfUseDefaultUI);
		[propget, id(6),   helpstring("property DenialsFor")]		HRESULT DenialsFor([in] IUnknown *pUnk, [out, retval] ICADenials **ppDenials);
	};
	
	[
		object,
		uuid(11166310-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICARequest Interface"),
		pointer_default(unique)
	]
	interface ICARequest : IDispatch
	{
		[propget, id(1), helpstring("property RequestedItem")]		HRESULT RequestedItem([out, retval] IUnknown **ppTunereq);
		[propget, id(2), helpstring("property CAManager")]			HRESULT CAManager([out, retval] ICAManager **ppManager);
		[propget, id(3), helpstring("property ScheduleEntry")]		HRESULT ScheduleEntry([out, retval] IUnknown **ppUnkScheduleEntry);	// IScheduleEntry?
		[propget, id(4), helpstring("property Denials")]			HRESULT Denials([out, retval] ICADenials **ppDenials);
		[propget, id(5), helpstring("property Components")]			HRESULT Components([out, retval] ICAComponents **pComponents);
		[propget, id(6), helpstring("property Check")]				HRESULT Check([out, retval] long *pcDenials);
		[propget, id(7), helpstring("property ResolveDenials")]		HRESULT ResolveDenials([out, retval] long *pcDenials);
		[propget, id(8), helpstring("property CountDeniedComponents")]	HRESULT CountDeniedComponents([out, retval] long *pcDeniedComponents);
	};

	[
		object,
		uuid(11166320-DF8A-463a-B620-7BEC23542010),
		helpstring("ICAPolicy Interface"),				// client written
		pointer_default(unique)
	]
	interface ICAPolicy : IUnknown  // -- not IDispatch, let the client side implement that interface
	{
		[propget, id(0),   helpstring("property Name")]				HRESULT Name([out, retval] BSTR *pbstr);
		[         id(1),   helpstring("method CheckRequest")]		HRESULT CheckRequest([in] ICARequest *pReq);
//		[propget, id(2),   helpstring("property CAManager")]		HRESULT CAManager([out, retval] ICAManager **ppManager);
		[propput, id(2),   helpstring("property CAManager")]		HRESULT CAManager([in] ICAManager *pManager);
		[propget, id(3),   helpstring("property OkToPersist")]		HRESULT OkToPersist([out, retval] BOOL *pfOkToPersist);
		[propget, id(4),   helpstring("property OkToRemove")]		HRESULT OkToRemove([out, retval] BOOL *pfOkToRemove);
		[propget, id(5),   helpstring("property OkToRemoveDenial")]	HRESULT OkToRemoveDenial(ICADenial *pDenial, [out, retval] BOOL *pfOk);
		[propget, id(6),   helpstring("property OkToRemoveOffer")]	HRESULT OkToRemoveOffer(ICAOffer *pOffer, [out, retval] BOOL *pfOk);
	}
 
	[
		object,
		uuid(11166330-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAToll Interface"),				// also client written
		pointer_default(unique)
	]
	interface ICAToll : IUnknown	// -- also not IDispatch - client side implements that interface
	{
//		[propget, id(1), helpstring("property CAManager")]		HRESULT CAManager([out, retval] ICAManager **ppManager);
		[propput, id(1), helpstring("property CAManager")]		HRESULT CAManager([in] ICAManager *pManager);
		[         id(2), helpstring("method Select")]			HRESULT Select([in] BOOL fSelect);
		[         id(3), helpstring("method PayToll")]			HRESULT PayToll();
		[propget, id(4), helpstring("property Refundable")]		HRESULT Refundable([out, retval] BOOL *pfRefundable);
		[         id(5), helpstring("method RefundToll")]		HRESULT RefundToll();
		[propget, id(6), helpstring("property TolledObject")]	HRESULT TolledObject([out, retval] IUnknown **ppUnkTolled);
		[propget, id(7), helpstring("property Denials")]		HRESULT Denials([out, retval] ICADenials **ppDenials);
		[propget, id(8), helpstring("property Policy")]			HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
		[propget, id(9), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
		[propget, id(10),helpstring("property TimePaid")]		HRESULT TimePaid([out, retval] DATE *pdtPaid);
		[propget, id(11),helpstring("property State")]			HRESULT State([out, retval] CATollState *penState);
	};

	[
		object,
		uuid(11166340-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICADenial Interface"),
		pointer_default(unique)
	]
	interface ICADenial : IDispatch
	{
		[propget, id(1), helpstring("property DeniedObject")]	HRESULT DeniedObject([out, retval] IUnknown **ppUnkDenied);
		[propget, id(2), helpstring("property Policy")]			HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
		[propget, id(3), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
		[propput, id(3), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
		[propget, id(4), helpstring("property State")]			HRESULT State([out, retval] CADenialState *penState);
		[propput, id(4), helpstring("property State")]			HRESULT State([in] CADenialState enState);
		[propget, id(5), helpstring("property Tolls")]			HRESULT Tolls([out, retval] ICATolls **ppTolls);
		[         id(6),   helpstring("method NotifyTollStateChanged")]		HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
	};
	
	[
		object,
		uuid(11166350-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAOffer Interface"),
		pointer_default(unique)
	]
	interface ICAOffer : IDispatch
	{
		[propget, id(1), helpstring("property CAManager")]		HRESULT CAManager([out, retval] ICAManager **ppManager);
		[propput, id(1), helpstring("property CAManager")]		HRESULT CAManager([in] ICAManager *pManager);
		[propget, id(2), helpstring("property Policy")]			HRESULT Policy([out, retval] ICAPolicy **pppolicy);
		[propget, id(3), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
		[propput, id(3), helpstring("property Description")]	HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
		[propget, id(4), helpstring("property StartTime")]		HRESULT StartTime([out, retval] DATE *pdtStart);
		[propget, id(5), helpstring("property EndTime")]		HRESULT EndTime([out, retval] DATE *pdtEnd);
		[propget, id(6), helpstring("property Tolls")]			HRESULT Tolls([out, retval] ICATolls **ppTolls);
		[         id(7), helpstring("method NotifyTollStateChanged")]		HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
	};

	[
		object,
		uuid(11166360-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAComponent Interface"),
		pointer_default(unique)
	]
	interface ICAComponent : IDispatch
	{
		[propget, id(1), helpstring("property Component")]		HRESULT Component([out, retval] IComponent **ppComponent);
		[propget, id(2), helpstring("property Denials")]		HRESULT Denials([out, retval] ICADenials **ppDenials);
		[propget, id(3), helpstring("property Request")]		HRESULT Request([out, retval] ICARequest **ppComponent);
	};

		// --------------------------------

	[
		uuid(11166100-DF8A-463a-B620-7BEC23542010),
		helpstring("CAManager Class")
	]
	coclass CAManager
	{
		[default] interface ICAManager;
		interface ICAManagerInternal;
//		interface ICAManagerXProxy;                             // this is the actual outgoing 'event' interface
		[default, source] dispinterface _ICAManagerEvents;
	};

	[				// magic class used to avoid circular references through the CAManager.
		hidden,
		uuid(11166101-DF8A-463a-B620-7BEC23542010),
		helpstring("CAManagerProxy Class")
	]
	coclass CAManagerProxy
	{
		[default] interface ICAManager;
		interface ICAManagerInternal;
//		[default, source] dispinterface _ICAManagerEvents;  /// QUESTION ??? DO I want these just here, or in the true Manager, or both?
	};

	[
		uuid(11166540-DF8A-463a-B620-7BEC23542010),			// needed for user's tolls.
		helpstring("CADenials Class")
	]
	coclass CADenials
	{
		[default] interface ICADenials;
		interface ICADenialsInternal;
		[default, source] dispinterface _ICADenialsEvents;
	};
	
						// TODO - mark this as hidden...
	[
		uuid(11166550-DF8A-463a-B620-7BEC23542010),
		helpstring("CAOffer Class")
	]
	coclass CAOffer
	{
		[default] interface ICAOffer;
	}; 


/*	[
		uuid(11166999-DF8A-463a-B620-7BEC23542010),
		helpstring("CATempEvent_TempBuilder Class - used so we can build events the first time")
	]
	coclass CATempEvent_TempBuilder
	{
		[source] dispinterface _ICAResDenialTreeEvents;
		[source] dispinterface _ICAManagerEvents;
		[source] dispinterface _ICARequestEvents;
		[source] dispinterface _ICATollsEvents;
		[source] dispinterface _ICADenialsEvents;
		[source] dispinterface _ICAPoliciesEvents;
		[source] dispinterface _ICAOffersEvents;
		[source] dispinterface _ICAComponentsEvents;
	};
*/
			// -----------------------------------
	[
		object,
		uuid(11166898-DF8A-463a-B620-7BEC23542010),
		dual,
		helpstring("ICAResDenialTree Interface"),
		pointer_default(unique)
	]
	interface ICAResDenialTree : IDispatch
	{
		[propget, id(1),   helpstring("property CAManager")]					HRESULT CAManager([out, retval] ICAManager **ppCAManager);
		[propput, id(1),   helpstring("property CAManager")]					HRESULT CAManager([in] ICAManager *pCAManager);
		[propget, id(2),   helpstring("property DisplayFields")]				HRESULT DisplayFields([out, retval] long *penFields);	// fields to display in default ResDenial UI
		[propput, id(2),   helpstring("property DisplayFields")]				HRESULT DisplayFields([in] long enFields);				// fields to display in default ResDenial UI
		[         id(3),   helpstring("method UpdateView")]						HRESULT UpdateView([in] IUnknown *pUnk);				// if object is being viewed, updates it.
				// ResDenial control listens to these incoming sink events sent by Manager ((_ICAManagerEvents).. ID's Must match 
		[		  id(2201),helpstring("method NotifyRequestActivated")]			HRESULT NotifyRequestActivated([in] ICARequest *preq);
		[		  id(2202),helpstring("method NotifyRequestDeactivated")]		HRESULT NotifyRequestDeactivated([in] ICARequest *preq);
		[		  id(2203),helpstring("method NotifyOfferAdded")]				HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2204),helpstring("method NotifyOfferRemoved")]				HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
		[		  id(2205),helpstring("method NotifyPolicyAdded")]				HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2206),helpstring("method NotifyPolicyRemoved")]			HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
		[		  id(2207),helpstring("method NotifyRequestDenialAdded")]		HRESULT NotifyRequestDenialAdded([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2208),helpstring("method NotifyRequestDenialRemoved")]		HRESULT NotifyRequestDenialRemoved([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2209),helpstring("method NotifyDenialTollAdded")]			HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2210),helpstring("method NotifyDenialTollRemoved")]		HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2211),helpstring("method NotifyTollDenialAdded")]			HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2212),helpstring("method NotifyTollDenialRemoved")]		HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
		[		  id(2213),helpstring("method NotifyOfferTollAdded")]			HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[		  id(2214),helpstring("method NotifyOfferTollRemoved")]			HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
		[         id(2215),helpstring("method NotifyTollStateChanged")]			HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
		[         id(2216),helpstring("method NotifyDenialStateChanged")]		HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
		[         id(2217),helpstring("method NotifyComponentDenialAdded")]		HRESULT NotifyComponentDenialAdded([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
		[         id(2218),helpstring("method NotifyComponentDenialRemoved")]	HRESULT NotifyComponentDenialRemoved([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
	};

	[
		uuid(11166998-DF8A-463a-B620-7BEC23542010),
		helpstring("CA Default RequestDenial Control")
	]
	coclass CAResDenialTree
	{
		[default] interface ICAResDenialTree;
		[default, source] dispinterface _ICAResDenialTreeEvents;
	};

				// -----------------------------

    [
            uuid(11166991-DF8A-463a-B620-7BEC23542010),
            helpstring("_ICADefaultDlgEvents Interface")
    ]
    dispinterface _ICADefaultDlgEvents
    {
            properties:
            methods:
    };

    [
            uuid(11166990-DF8A-463a-B620-7BEC23542010),
            helpstring("CADefaultDlg Class")
    ]
    coclass CADefaultDlg
    {
            [default] interface ICADefaultDlg;
            [default, source] dispinterface _ICADefaultDlgEvents;
    };

			// -------------------------------------
			//  Magic way to define the SID_ ...

	cpp_quote("#define SID_CAManager CLSID_CAManager")
};