source: trunk/DirectShowSpy/Module.idl @ 438

Last change on this file since 438 was 438, checked in by roman, 7 years ago

Reorganized IDL; removed BdaHooks? reference (as deprecated; the hook code is still in place - might still be useful?)

File size: 8.8 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(6945711B-FE0F-4C54-965F-5B67969C28B7),
55                dual,
56                oleautomation,
57                nonextensible,
58                helpstring("ISpy Interface"),
59                pointer_default(unique)
60        ]
61        interface ISpy : IDispatch
62        {
63                [id(1), propget] HRESULT MonikerDisplayName([out, retval] BSTR* psMonikerDisplayName);
64                [id(2), propget] HRESULT CreationTime([out, retval] DATE* pfTime);
65                [id(3), propget] HRESULT FriendlyName([out, retval] BSTR* psFriendlyName);
66                [id(3), propput] HRESULT FriendlyName([in] BSTR sFriendlyName);
67                [id(4)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
68                [id(5)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
69                [id(6)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
70                [id(7)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [out, retval] VARIANT_BOOL* pbResult);
71                [id(8)] HRESULT ReadRunPropertyBag([in] IUnknown* pBaseFilterUnknown, [in] VARIANT_BOOL bAllowExtension, [out, retval] VARIANT* pvValue);
72        };
73        [
74                object,
75                uuid(E59EED72-E94A-44D9-8C1F-6535A4C1D6C9),
76                dual,
77                oleautomation,
78                nonextensible,
79                helpstring("IFilterGraphMemoryAllocatorData Interface"),
80                pointer_default(unique)
81        ]
82        interface IFilterGraphMemoryAllocatorData : IDispatch
83        {
84                [id(DISPID_VALUE), propget] HRESULT Value([out, retval] VARIANT* pvValue);
85        };
86        [
87                uuid(F552C23D-F088-41C3-A080-8464D7BB9BAD),
88                helpstring("Spy Class")
89        ]
90        coclass Spy
91        {
92                [default] interface ISpy;
93                //interface ISpyEx;
94                interface IModuleVersionInformation;
95                interface IFilterGraphMemoryAllocatorData;
96        };
97        [
98                object,
99                uuid(ACBECDFD-D8CA-49c8-B799-D23225D5BFAD),
100                nonextensible,
101                helpstring("IFilterGraphAddRemoveHook Interface"),
102                pointer_default(unique)
103        ]
104        interface IFilterGraphAddRemoveHook : IUnknown
105        {
106                HRESULT OnAddFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in] LPCWSTR pszName, [in, out] BOOL* pbDefault);
107                HRESULT OnRemoveFilter([in] ISpy* pSpy, [in] IUnknown* pBaseFilterUnknown, [in, out] BOOL* pbDefault);
108                HRESULT OnAddSourceFilter([in] ISpy* pSpy, [in] LPCWSTR pszFileName, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
109                HRESULT OnAddSourceFilterForMoniker([in] ISpy* pSpy, [in] IUnknown* pMonikerUnknown, [in] IUnknown* pBindCtxUnknown, [in] LPCWSTR pszFilterName, [out] IUnknown** ppBaseFilterUnknown, [in, out] BOOL* pbDefault);
110        };
111        [
112                object,
113                uuid(D0F4C168-D09D-481e-903D-7461CE69E391),
114                nonextensible,
115                helpstring("IFilterGraphConnectHook Interface"),
116                pointer_default(unique)
117        ]
118        interface IFilterGraphConnectHook : IUnknown
119        {
120                HRESULT OnConnectDirect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
121                HRESULT OnReconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
122                HRESULT OnDisconnect([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in, out] BOOL* pbDefault);
123                HRESULT OnConnect([in] ISpy* pSpy, [in] IUnknown* pOutputPinUnknown, [in] IUnknown* pInputPinUnknown, [in, out] BOOL* pbDefault);
124                HRESULT OnReconnectEx([in] ISpy* pSpy, [in] IUnknown* pPinUnknown, [in] const BYTE* pMediaTypeData, [in, out] BOOL* pbDefault);
125        };
126        [
127                object,
128                uuid(65FA1519-A935-4fa9-A15D-9426457E02F6),
129                nonextensible,
130                helpstring("IFilterGraphStateControlHook Interface"),
131                pointer_default(unique)
132        ]
133        interface IFilterGraphStateControlHook : IUnknown
134        {
135                HRESULT OnRun([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
136                HRESULT OnPause([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
137                HRESULT OnStop([in] ISpy* pSpy, [in, out] BOOL* pbDefault);
138        };
139        [
140                uuid(2C281C40-8853-4a30-99D3-9DCFF2C015C9),
141                helpstring("NoThreadSpy Class")
142        ]
143        coclass NoThreadSpy
144        {
145                [default] interface ISpy;
146                //interface ISpyEx;
147                interface IModuleVersionInformation;
148                interface IFilterGraphMemoryAllocatorData;
149        };
150        [
151                object,
152                uuid(34B280D7-A144-4a64-BCB9-3616896F6877),
153                dual,
154                oleautomation,
155                nonextensible,
156                helpstring("IFilterMapperSpy Interface"),
157                pointer_default(unique)
158        ]
159        interface IFilterMapperSpy : IDispatch
160        {
161        };
162        [
163                uuid(B6274D9B-1AD3-4c32-83C5-35DC33CAFF47),
164                helpstring("FilterMapperSpy Class")
165        ]
166        coclass FilterMapperSpy
167        {
168                [default] interface IFilterMapperSpy;
169        };
170        [
171                object,
172                uuid(14EB119F-25CE-4654-ABE1-E6742AF03F2D),
173                dual,
174                oleautomation,
175                nonextensible,
176                helpstring("ISystemDeviceEnumeratorSpy Interface"),
177                pointer_default(unique)
178        ]
179        interface ISystemDeviceEnumeratorSpy : IDispatch
180        {
181        };
182        [
183                uuid(AD42E3BD-7B9B-4783-9DA2-61A9ACD0D4D2),
184                helpstring("SystemDeviceEnumeratorSpy Class")
185        ]
186        coclass SystemDeviceEnumeratorSpy
187        {
188                [default] interface ISystemDeviceEnumeratorSpy;
189        };
190        [
191                object,
192                uuid(3D1AF248-DEF1-4E26-A071-FEDF15FED6A8),
193                dual,
194                oleautomation,
195                nonextensible,
196                helpstring("IFilterGraphHelper Interface"),
197                pointer_default(unique)
198        ]
199        interface IFilterGraphHelper : IDispatch
200        {
201                [id(DISPID_VALUE), propget] HRESULT FilterGraph([out, retval] IUnknown** ppFilterGraphUnknown);
202                [id(DISPID_VALUE), propput] HRESULT FilterGraph([in] IUnknown* pFilterGraphUnknown);
203                [id(1), propget] HRESULT Text([out, retval] BSTR* psText);
204                [id(2)] HRESULT DoPropertyFrameModal([in] LONG nParentWindowHandle);
205                [id(3)] HRESULT DoFilterGraphListModal([in] LONG nParentWindowHandle);
206                [id(4)] HRESULT OpenGraphStudioNext([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
207                [id(5)] HRESULT OpenGraphEdit([in] LONG nParentWindowHandle, [in] BSTR sMonikerDisplayName, [out, retval] VARIANT_BOOL* pbResult);
208                [id(6), propget] HRESULT Options([out, retval] VARIANT* pvOptions);
209                [id(6), propput] HRESULT Options([in] VARIANT vOptions);
210        };
211        [
212                uuid(5A9A684C-A891-4032-8D31-FF6EAB5A0C1E),
213                helpstring("FilterGraphHelper Class")
214        ]
215        coclass FilterGraphHelper
216        {
217                [default] interface IFilterGraphHelper;
218        };
219        [
220                object,
221                uuid(E267813C-8F29-4D69-A776-CD462494FCE4),
222                dual,
223                oleautomation,
224                nonextensible,
225                helpstring("IRunPropertyBagAware Interface"),
226                pointer_default(unique)
227        ]
228        interface IRunPropertyBagAware : IDispatch
229        {
230                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] IUnknown** ppPropertyBagUnknown);
231        };
232        [
233                uuid(76127943-D22E-4C4E-9D9B-173C224D0EE4),
234                helpstring("RunPropertyBagPropertyPage Class")
235        ]
236        coclass RunPropertyBagPropertyPage
237        {
238                [default] interface IUnknown; //IPropertyPage;
239        };
240        [
241                object,
242                uuid(DA0D924F-1AC0-496D-AE44-CC2BD8CE7CFA),
243                dual,
244                oleautomation,
245                nonextensible,
246                helpstring("IRunEventAware Interface"),
247                pointer_default(unique)
248        ]
249        interface IRunEventAware : IDispatch
250        {
251                [propget, id(DISPID_VALUE)] HRESULT Value([out, retval] VARIANT* pvValue);
252                [propget, id(1)] HRESULT Capture([out, retval] VARIANT_BOOL* pbCapture);
253                [propput, id(1)] HRESULT Capture([in] VARIANT_BOOL bCapture);
254        };
255        [
256                uuid(AD0E84E9-DE25-4C1A-85A5-47406604E144),
257                helpstring("RunEventPropertyPage Class")
258        ]
259        coclass RunEventPropertyPage
260        {
261                [default] interface IUnknown; //IPropertyPage;
262        };
263};
Note: See TracBrowser for help on using the repository browser.