source: trunk/DirectShowSpy/Module.idl @ 537

Last change on this file since 537 was 503, checked in by roman, 9 years ago

Improved event code logging, added non-ROT FGT (incomplete)

File size: 11.2 KB
Line 
1////////////////////////////////////////////////////////////
2// Copyright (C) Roman Ryltsov, 2008-2015
3// Created by Roman Ryltsov roman@alax.info, http://alax.info
4//
5// This source code is published to complement DirectShowSpy developer powertoy
6// and demonstrate the internal use of APIs and tricks powering the tool. It is
7// allowed to freely re-use the portions of the code in other projects, commercial
8// or otherwise (provided that you don’t pretend that you wrote the original tool).
9//
10// Please keep in mind that DirectShowSpy is a developer tool, it is strongly recommended
11// that it is not shipped with release grade software. It is allowed to distribute
12// DirectShowSpy if only it is not registered with Windows by default and either
13// used privately, or registered on specific throubleshooting request. The advice applies
14// to hooking methods used by DirectShowSpy in general as well.
15
16import "oaidl.idl";
17import "ocidl.idl";
18
19[
20        object,
21        uuid(A7490000-3A5D-455D-9B81-2025B74CD4CD),
22        nonextensible,
23        helpstring("ISpyEx Interface"),
24        pointer_default(unique)
25]
26interface ISpyEx : IUnknown
27{
28};
29[
30        uuid(B9EC374B-834B-4DA9-BFB5-C1872CE736FF),
31        version(1.0),
32        helpstring("Alax.Info Filter Graph Spy 1.0 Type Library")
33]
34library AlaxInfoDirectShowSpy
35{
36        importlib("stdole2.tlb");
37        [
38                object,
39                uuid(968E0597-E713-4EF5-A6F3-780B816204C2),
40                dual,
41                oleautomation,
42                nonextensible,
43                helpstring("IModuleVersionInformation Interface"),
44                pointer_default(unique)
45        ]
46        interface IModuleVersionInformation : IDispatch
47        {
48                [id(1), propget] HRESULT Path([out, retval] BSTR* psPath);
49                [id(2), propget] HRESULT FileVersion([out, retval] LONGLONG* pnFileVersion);
50                [id(3), propget] HRESULT FileVersionString([out, retval] BSTR* psFileVersionString);
51        };
52        [
53                object,
54                uuid(B8270A07-1A10-41B1-B5A6-D8D9397020A8),
55                nonextensible,
56                helpstring("IMediaSampleTrace Interface"),
57                pointer_default(unique)
58        ]
59        interface IMediaSampleTrace : IUnknown
60        {
61                HRESULT RegisterNewSegment([in] IUnknown* pBaseFilterUnknown, [in] const WCHAR* pszStreamName, [in] LONGLONG nStartTime, [in] LONGLONG nStopTime, [in] DOUBLE fRate, [in] const WCHAR* pszComment, [in] USHORT nHighlight);
62                HRESULT RegisterMediaSample([in] IUnknown* pBaseFilterUnknown, [in] const WCHAR* pszStreamName, [in] const BYTE* pnSamplePropertiesData, [in] const WCHAR* pszComment, [in] USHORT nHighlight);
63                HRESULT RegisterEndOfStream([in] IUnknown* pBaseFilterUnknown, [in] const WCHAR* pszStreamName, [in] const WCHAR* pszComment, [in] USHORT nHighlight);
64                HRESULT RegisterComment([in] IUnknown* pBaseFilterUnknown, [in] const WCHAR* pszStreamName, [in] const WCHAR* pszComment, [in] USHORT nHighlight);
65        };
66        [
67                object,
68                uuid(6945711B-FE0F-4C54-965F-5B67969C28B7),
69                dual,
70                oleautomation,
71                nonextensible,
72                helpstring("ISpy Interface"),
73                pointer_default(unique)
74        ]
75        interface ISpy : IDispatch
76        {
77                [id(1), propget] HRESULT MonikerDisplayName([out, retval] BSTR* psMonikerDisplayName);
78                [id(2), propget] HRESULT CreationTime([out, retval] DATE* pfTime);
79                [id(3), propget] HRESULT FriendlyName([out, retval] BSTR* psFriendlyName);
80                [id(3), propput] HRESULT FriendlyName([in] BSTR sFriendlyName);
81                [id(4)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
82                [id(5)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
83                [id(6)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
84                [id(7)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
85                [id(8)] HRESULT ReadRunPropertyBag([in] IUnknown* pBaseFilterUnknown, [in] VARIANT_BOOL bAllowExtension, [out, retval] VARIANT* pvValue);
86                [id(9)] HRESULT CreateMediaSampleTrace([out, retval] IMediaSampleTrace** ppMediaSampleTrace);
87        };
88        [
89                object,
90                uuid(E59EED72-E94A-44D9-8C1F-6535A4C1D6C9),
91                dual,
92                oleautomation,
93                nonextensible,
94                helpstring("IFilterGraphMemoryAllocatorData Interface"),
95                pointer_default(unique)
96        ]
97        interface IFilterGraphMemoryAllocatorData : IDispatch
98        {
99                [id(DISPID_VALUE), propget] HRESULT Value([out, retval] VARIANT* pvValue);
100        };
101        [
102                uuid(F552C23D-F088-41C3-A080-8464D7BB9BAD),
103                helpstring("Spy Class")
104        ]
105        coclass Spy
106        {
107                [default] interface ISpy;
108                //interface ISpyEx;
109                interface IModuleVersionInformation;
110                interface IFilterGraphMemoryAllocatorData;
111        };
112        [
113                object,
114                uuid(ACBECDFD-D8CA-49c8-B799-D23225D5BFAD),
115                nonextensible,
116                helpstring("IFilterGraphAddRemoveHook Interface"),
117                pointer_default(unique)
118        ]
119        interface IFilterGraphAddRemoveHook : IUnknown
120        {
121                HRESULT OnAddFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in] LPCWSTR pszName, [in, out] BOOL* pbDefault);
122                HRESULT OnRemoveFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in, out] BOOL* pbDefault);
123                HRESULT OnAddSourceFilter([in] ISpy* pSpy, [in] LPCWSTR pszFileName, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
124                HRESULT OnAddSourceFilterForMoniker([in] ISpy* pSpy, [in] IUnknown* pMonikerUnknown, [in] IUnknown* pBindCtxUnknown, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
125        };
126        [
127                object,
128                uuid(D0F4C168-D09D-481e-903D-7461CE69E391),
129                nonextensible,
130                helpstring("IFilterGraphConnectHook Interface"),
131                pointer_default(unique)
132        ]
133        interface IFilterGraphConnectHook : IUnknown
134        {
135                HRESULT OnConnectDirect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
136                HRESULT OnReconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
137                HRESULT OnDisconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
138                HRESULT OnConnect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in, out] BOOL* pbDefault);
139                HRESULT OnReconnectEx([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
140        };
141        [
142                object,
143                uuid(65FA1519-A935-4fa9-A15D-9426457E02F6),
144                nonextensible,
145                helpstring("IFilterGraphStateControlHook Interface"),
146                pointer_default(unique)
147        ]
148        interface IFilterGraphStateControlHook : IUnknown
149        {
150                HRESULT OnRun([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
151                HRESULT OnPause([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
152                HRESULT OnStop([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
153        };
154        [
155                uuid(2C281C40-8853-4a30-99D3-9DCFF2C015C9),
156                helpstring("NoThreadSpy Class")
157        ]
158        coclass NoThreadSpy
159        {
160                [default] interface ISpy;
161                //interface ISpyEx;
162                interface IModuleVersionInformation;
163                interface IFilterGraphMemoryAllocatorData;
164        };
165        [
166                object,
167                uuid(34B280D7-A144-4a64-BCB9-3616896F6877),
168                dual,
169                oleautomation,
170                nonextensible,
171                helpstring("IFilterMapperSpy Interface"),
172                pointer_default(unique)
173        ]
174        interface IFilterMapperSpy : IDispatch
175        {
176        };
177        [
178                uuid(B6274D9B-1AD3-4c32-83C5-35DC33CAFF47),
179                helpstring("FilterMapperSpy Class")
180        ]
181        coclass FilterMapperSpy
182        {
183                [default] interface IFilterMapperSpy;
184        };
185        [
186                object,
187                uuid(14EB119F-25CE-4654-ABE1-E6742AF03F2D),
188                dual,
189                oleautomation,
190                nonextensible,
191                helpstring("ISystemDeviceEnumeratorSpy Interface"),
192                pointer_default(unique)
193        ]
194        interface ISystemDeviceEnumeratorSpy : IDispatch
195        {
196        };
197        [
198                uuid(AD42E3BD-7B9B-4783-9DA2-61A9ACD0D4D2),
199                helpstring("SystemDeviceEnumeratorSpy Class")
200        ]
201        coclass SystemDeviceEnumeratorSpy
202        {
203                [default] interface ISystemDeviceEnumeratorSpy;
204        };
205        [
206                object,
207                uuid(3D1AF248-DEF1-4E26-A071-FEDF15FED6A8),
208                dual,
209                oleautomation,
210                nonextensible,
211                helpstring("IFilterGraphHelper Interface"),
212                pointer_default(unique)
213        ]
214        interface IFilterGraphHelper : IDispatch
215        {
216                [id(DISPID_VALUE), propget] HRESULT FilterGraph([out, retval] IUnknown** ppFilterGraphUnknown);
217                [id(DISPID_VALUE), propput] HRESULT FilterGraph([in] IUnknown* pFilterGraphUnknown);
218                [id(1), propget] HRESULT Text([out, retval] BSTR* psText);
219                [id(2)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
220                [id(3)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
221                [id(4)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
222                [id(5)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
223                [id(6), propget] HRESULT Options([out, retval] VARIANT* pvOptions);
224                [id(6), propput] HRESULT Options([in] VARIANT vOptions);
225        };
226        [
227                uuid(5A9A684C-A891-4032-8D31-FF6EAB5A0C1E),
228                helpstring("FilterGraphHelper Class")
229        ]
230        coclass FilterGraphHelper
231        {
232                [default] interface IFilterGraphHelper;
233        };
234        [
235                object,
236                uuid(E267813C-8F29-4D69-A776-CD462494FCE4),
237                dual,
238                oleautomation,
239                nonextensible,
240                helpstring("IRunPropertyBagAware Interface"),
241                pointer_default(unique)
242        ]
243        interface IRunPropertyBagAware : IDispatch
244        {
245                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] IUnknown** ppPropertyBagUnknown);
246        };
247        [
248                uuid(76127943-D22E-4C4E-9D9B-173C224D0EE4),
249                helpstring("RunPropertyBagPropertyPage Class")
250        ]
251        coclass RunPropertyBagPropertyPage
252        {
253                [default] interface IUnknown; //IPropertyPage;
254        };
255        [
256                object,
257                uuid(DA0D924F-1AC0-496D-AE44-CC2BD8CE7CFA),
258                dual,
259                oleautomation,
260                nonextensible,
261                helpstring("IRunEventAware Interface"),
262                pointer_default(unique)
263        ]
264        interface IRunEventAware : IDispatch
265        {
266                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] VARIANT* pvValue);
267                [propget, id(1)] HRESULT Capture([out, retval] VARIANT_BOOL* pbCapture);
268                [propput, id(1)] HRESULT Capture([in] VARIANT_BOOL bCapture);
269        };
270        [
271                uuid(AD0E84E9-DE25-4C1A-85A5-47406604E144),
272                helpstring("RunEventPropertyPage Class")
273        ]
274        coclass RunEventPropertyPage
275        {
276                [default] interface IUnknown; //IPropertyPage;
277        };
278        [
279                object,
280                uuid(ECDC55A1-FFD7-4999-BAB5-579D5773F0B6),
281                dual,
282                oleautomation,
283                nonextensible,
284                pointer_default(unique)
285        ]
286        interface IFilterGraphTableItem : IDispatch
287        {
288                [id(DISPID_VALUE), propget] HRESULT FilterGraph([out, retval] IUnknown** ppFilterGraphUnknown);
289                [id(DISPID_VALUE), propput] HRESULT FilterGraph([in] IUnknown* pFilterGraphUnknown);
290                [id(1), propget] HRESULT Time([out, retval] DATE* pfTime);
291        };
292        [
293                uuid(7B2E1768-3037-4975-ABA1-BA626397BF08)
294        ]
295        coclass FilterGraphTableItem
296        {
297                [default] interface IFilterGraphTableItem;
298        };
299        [
300                object,
301                uuid(15078C09-6D0C-4284-924C-F6CD13CA39F6),
302                dual,
303                oleautomation,
304                nonextensible,
305                pointer_default(unique)
306        ]
307        interface IFilterGraphTable : IDispatch
308        {
309                [id(DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum([out, retval] IUnknown** ppEnum);
310                [id(DISPID_VALUE), propget] HRESULT Item([in] VARIANT vIndex, [out, retval] VARIANT* pvItem);
311                [id(1), propget] HRESULT Count([out, retval] LONG* pnCount);
312        };
313        [
314                uuid(44EF31BC-CC5F-4163-8832-BDC79ED59162)
315        ]
316        coclass FilterGraphTable
317        {
318                [default] interface IFilterGraphTable;
319        };
320        [
321                object,
322                uuid(D9A734F0-3230-4574-81FA-71DE297ACDF8),
323                dual,
324                oleautomation,
325                nonextensible,
326                pointer_default(unique)
327        ]
328        interface IFilterGraphTableActiveObject : IDispatch
329        {
330                [id(1)] HRESULT GetFilterGraphs([out] LONG* pnProcessIdentifier, [out] VARIANT* pvArray);
331        };
332};
Note: See TracBrowser for help on using the repository browser.