source: trunk/DirectShowSpy/Module.idl

Last change on this file was 839, checked in by roman, 13 months ago
File size: 11.9 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        interface IFilterGraphHelper;
67        [
68                object,
69                uuid(6945711B-FE0F-4C54-965F-5B67969C28B7),
70                dual,
71                oleautomation,
72                nonextensible,
73                helpstring("ISpy Interface"),
74                pointer_default(unique)
75        ]
76        interface ISpy : IDispatch
77        {
78                [id(1), propget] HRESULT MonikerDisplayName([out, retval] BSTR* psMonikerDisplayName);
79                [id(2), propget] HRESULT CreationTime([out, retval] DATE* pfTime);
80                [id(3), propget] HRESULT FriendlyName([out, retval] BSTR* psFriendlyName);
81                [id(3), propput] HRESULT FriendlyName([in] BSTR sFriendlyName);
82                [id(4)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
83                [id(5)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
84                [id(6)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
85                [id(7)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
86                [id(8)] HRESULT ReadRunPropertyBag([in] IUnknown* pBaseFilterUnknown, [in] VARIANT_BOOL bAllowExtension, [out, retval] VARIANT* pvValue);
87                [id(9)] HRESULT CreateMediaSampleTrace([out, retval] IMediaSampleTrace** ppMediaSampleTrace);
88                [id(10)] HRESULT CreateFilterGraphHelper([out, retval] IFilterGraphHelper** ppFilterGraphHelper);
89        };
90        [
91                object,
92                uuid(E59EED72-E94A-44D9-8C1F-6535A4C1D6C9),
93                dual,
94                oleautomation,
95                nonextensible,
96                helpstring("IFilterGraphMemoryAllocatorData Interface"),
97                pointer_default(unique)
98        ]
99        interface IFilterGraphMemoryAllocatorData : IDispatch
100        {
101                [id(DISPID_VALUE), propget] HRESULT Value([out, retval] VARIANT* pvValue);
102        };
103        [
104                uuid(F552C23D-F088-41C3-A080-8464D7BB9BAD),
105                helpstring("Spy Class")
106        ]
107        coclass Spy
108        {
109                [default] interface ISpy;
110                //interface ISpyEx;
111                interface IModuleVersionInformation;
112                interface IFilterGraphMemoryAllocatorData;
113        };
114        [
115                object,
116                uuid(ACBECDFD-D8CA-49c8-B799-D23225D5BFAD),
117                nonextensible,
118                helpstring("IFilterGraphAddRemoveHook Interface"),
119                pointer_default(unique)
120        ]
121        interface IFilterGraphAddRemoveHook : IUnknown
122        {
123                HRESULT OnAddFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in] LPCWSTR pszName, [in, out] BOOL* pbDefault);
124                HRESULT OnRemoveFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in, out] BOOL* pbDefault);
125                HRESULT OnAddSourceFilter([in] ISpy* pSpy, [in] LPCWSTR pszFileName, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
126                HRESULT OnAddSourceFilterForMoniker([in] ISpy* pSpy, [in] IUnknown* pMonikerUnknown, [in] IUnknown* pBindCtxUnknown, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
127        };
128        [
129                object,
130                uuid(D0F4C168-D09D-481e-903D-7461CE69E391),
131                nonextensible,
132                helpstring("IFilterGraphConnectHook Interface"),
133                pointer_default(unique)
134        ]
135        interface IFilterGraphConnectHook : IUnknown
136        {
137                HRESULT OnConnectDirect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
138                HRESULT OnReconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
139                HRESULT OnDisconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
140                HRESULT OnConnect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in, out] BOOL* pbDefault);
141                HRESULT OnReconnectEx([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
142        };
143        [
144                object,
145                uuid(65FA1519-A935-4fa9-A15D-9426457E02F6),
146                nonextensible,
147                helpstring("IFilterGraphStateControlHook Interface"),
148                pointer_default(unique)
149        ]
150        interface IFilterGraphStateControlHook : IUnknown
151        {
152                HRESULT OnRun([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
153                HRESULT OnPause([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
154                HRESULT OnStop([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
155        };
156        [
157                uuid(2C281C40-8853-4a30-99D3-9DCFF2C015C9),
158                helpstring("NoThreadSpy Class")
159        ]
160        coclass NoThreadSpy
161        {
162                [default] interface ISpy;
163                //interface ISpyEx;
164                interface IModuleVersionInformation;
165                interface IFilterGraphMemoryAllocatorData;
166        };
167        [
168                uuid(A4AE1D54-92B3-4F11-B351-AC483155D914),
169                helpstring("PrivateThreadSpy Class")
170        ]
171        coclass PrivateThreadSpy
172        {
173                [default] interface ISpy;
174                //interface ISpyEx;
175                interface IModuleVersionInformation;
176                interface IFilterGraphMemoryAllocatorData;
177        };
178        [
179                object,
180                uuid(34B280D7-A144-4a64-BCB9-3616896F6877),
181                dual,
182                oleautomation,
183                nonextensible,
184                helpstring("IFilterMapperSpy Interface"),
185                pointer_default(unique)
186        ]
187        interface IFilterMapperSpy : IDispatch
188        {
189        };
190        [
191                uuid(B6274D9B-1AD3-4c32-83C5-35DC33CAFF47),
192                helpstring("FilterMapperSpy Class")
193        ]
194        coclass FilterMapperSpy
195        {
196                [default] interface IFilterMapperSpy;
197        };
198        [
199                object,
200                uuid(14EB119F-25CE-4654-ABE1-E6742AF03F2D),
201                dual,
202                oleautomation,
203                nonextensible,
204                helpstring("ISystemDeviceEnumeratorSpy Interface"),
205                pointer_default(unique)
206        ]
207        interface ISystemDeviceEnumeratorSpy : IDispatch
208        {
209        };
210        [
211                uuid(AD42E3BD-7B9B-4783-9DA2-61A9ACD0D4D2),
212                helpstring("SystemDeviceEnumeratorSpy Class")
213        ]
214        coclass SystemDeviceEnumeratorSpy
215        {
216                [default] interface ISystemDeviceEnumeratorSpy;
217        };
218        [
219                object,
220                uuid(3D1AF248-DEF1-4E26-A071-FEDF15FED6A8),
221                dual,
222                oleautomation,
223                nonextensible,
224                helpstring("IFilterGraphHelper Interface"),
225                pointer_default(unique)
226        ]
227        interface IFilterGraphHelper : IDispatch
228        {
229                [id(DISPID_VALUE), propget] HRESULT FilterGraph([out, retval] IUnknown** ppFilterGraphUnknown);
230                [id(DISPID_VALUE), propput] HRESULT FilterGraph([in] IUnknown* pFilterGraphUnknown);
231                [id(1), propget] HRESULT Text([out, retval] BSTR* psText);
232                [id(2)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
233                [id(3)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
234                [id(4)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
235                [id(5)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
236                [id(6), propget] HRESULT Options([out, retval] VARIANT* pvOptions);
237                [id(6), propput] HRESULT Options([in] VARIANT vOptions);
238                [id(7)] HRESULT ResetMediaSampleTrace([in] VARIANT vProcessIdentifier);
239                [id(8)] HRESULT LockMediaSampleTrace([out, retval] IUnknown** ppLockUnknown);
240                [id(9)] HRESULT GetMediaSampleTrace([in] VARIANT vProcessIdentifier, [out, retval] BSTR* psText);
241        };
242        [
243                uuid(5A9A684C-A891-4032-8D31-FF6EAB5A0C1E),
244                helpstring("FilterGraphHelper Class")
245        ]
246        coclass FilterGraphHelper
247        {
248                [default] interface IFilterGraphHelper;
249                interface IModuleVersionInformation;
250        };
251        [
252                object,
253                uuid(E267813C-8F29-4D69-A776-CD462494FCE4),
254                dual,
255                oleautomation,
256                nonextensible,
257                helpstring("IRunPropertyBagAware Interface"),
258                pointer_default(unique)
259        ]
260        interface IRunPropertyBagAware : IDispatch
261        {
262                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] IUnknown** ppPropertyBagUnknown);
263        };
264        [
265                uuid(76127943-D22E-4C4E-9D9B-173C224D0EE4),
266                helpstring("RunPropertyBagPropertyPage Class")
267        ]
268        coclass RunPropertyBagPropertyPage
269        {
270                [default] interface IUnknown; //IPropertyPage;
271        };
272        [
273                object,
274                uuid(DA0D924F-1AC0-496D-AE44-CC2BD8CE7CFA),
275                dual,
276                oleautomation,
277                nonextensible,
278                helpstring("IRunEventAware Interface"),
279                pointer_default(unique)
280        ]
281        interface IRunEventAware : IDispatch
282        {
283                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] VARIANT* pvValue);
284                [propget, id(1)] HRESULT Capture([out, retval] VARIANT_BOOL* pbCapture);
285                [propput, id(1)] HRESULT Capture([in] VARIANT_BOOL bCapture);
286        };
287        [
288                uuid(AD0E84E9-DE25-4C1A-85A5-47406604E144),
289                helpstring("RunEventPropertyPage Class")
290        ]
291        coclass RunEventPropertyPage
292        {
293                [default] interface IUnknown; //IPropertyPage;
294        };
295        [
296                object,
297                uuid(ECDC55A1-FFD7-4999-BAB5-579D5773F0B6),
298                dual,
299                oleautomation,
300                nonextensible,
301                pointer_default(unique)
302        ]
303        interface IFilterGraphTableItem : IDispatch
304        {
305                [id(DISPID_VALUE), propget] HRESULT FilterGraph([out, retval] IUnknown** ppFilterGraphUnknown);
306                [id(DISPID_VALUE), propput] HRESULT FilterGraph([in] IUnknown* pFilterGraphUnknown);
307                [id(1), propget] HRESULT Time([out, retval] DATE* pfTime);
308        };
309        [
310                uuid(7B2E1768-3037-4975-ABA1-BA626397BF08)
311        ]
312        coclass FilterGraphTableItem
313        {
314                [default] interface IFilterGraphTableItem;
315        };
316        [
317                object,
318                uuid(15078C09-6D0C-4284-924C-F6CD13CA39F6),
319                dual,
320                oleautomation,
321                nonextensible,
322                pointer_default(unique)
323        ]
324        interface IFilterGraphTable : IDispatch
325        {
326                [id(DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum([out, retval] IUnknown** ppEnum);
327                [id(DISPID_VALUE), propget] HRESULT Item([in] VARIANT vIndex, [out, retval] VARIANT* pvItem);
328                [id(1), propget] HRESULT Count([out, retval] LONG* pnCount);
329        };
330        [
331                uuid(44EF31BC-CC5F-4163-8832-BDC79ED59162)
332        ]
333        coclass FilterGraphTable
334        {
335                [default] interface IFilterGraphTable;
336        };
337        [
338                object,
339                uuid(D9A734F0-3230-4574-81FA-71DE297ACDF8),
340                dual,
341                oleautomation,
342                nonextensible,
343                pointer_default(unique)
344        ]
345        interface IFilterGraphTableActiveObject : IDispatch
346        {
347                [id(1)] HRESULT GetFilterGraphs([out] LONG* pnProcessIdentifier, [out] VARIANT* pvArray);
348        };
349};
Note: See TracBrowser for help on using the repository browser.