source: trunk/DirectShowSpy/Module.idl @ 322

Last change on this file since 322 was 322, checked in by roman, 8 years ago

Added memory allocator buffer inspection capability

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