<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: DirectShow Filter Graph Spy</title>
	<atom:link href="http://alax.info/blog/777/feed" rel="self" type="application/rss+xml" />
	<link>http://alax.info/blog/777</link>
	<description>Software Production Line</description>
	<lastBuildDate>Thu, 26 Aug 2010 12:31:59 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Roman</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5732</link>
		<dc:creator>Roman</dc:creator>
		<pubDate>Thu, 24 Dec 2009 13:11:52 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5732</guid>
		<description>Note that the binary was renamed from FilterGraphSpy.dll to DirectShowSpy.dll.</description>
		<content:encoded><![CDATA[<p>Note that the binary was renamed from FilterGraphSpy.dll to DirectShowSpy.dll.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sdg78p</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5717</link>
		<dc:creator>sdg78p</dc:creator>
		<pubDate>Thu, 09 Jul 2009 06:44:52 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5717</guid>
		<description>Thanks for the suggestions. It was a refcount issue due to the filter being held by its pins. I had to catch all the points where the inner filter was being returned and handle those interfaces too. Works great now.</description>
		<content:encoded><![CDATA[<p>Thanks for the suggestions. It was a refcount issue due to the filter being held by its pins. I had to catch all the points where the inner filter was being returned and handle those interfaces too. Works great now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5711</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Wed, 01 Jul 2009 05:57:50 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5711</guid>
		<description>&lt;blockquote&gt;I’m making a filter that uses TreatAs to hook an existing IBaseFilter derived filter using the same approach as your example (load lib, reflect calls, etc.), and it all works great as long as I return the inner filter’s IBaseFilter (and its base interfaces) when queried (all other queries are passed to the inner object).&lt;/blockquote&gt;

With an access violation during destruction, the most likely cause is reference counting. You should probably see how you are destroying your object and then receive another call on its interface. And when you return original &lt;i&gt;IBaseFilter&lt;/i&gt; you probably don&#039;t have any reflecting code remained, other than instantiation and QueryInterface. Are you aggregating the filter you are hooking? Basically BaseClasses are not 100% COM compliant (they are coming from long ago and nobody cared to fix this compliance since then). 

So if you are aggregating, the might be some [small] issues in COM aggregation compliance, and if you are not aggregating, or the filter you are hooking does not support aggregation, then you must hook all interfaces of interest so that you never expose original one, including those of pins. 

The difference between applications might be in an order of calls. For example, some application can obtain pin&#039;s interface and then through it get owner filter interface and keep it so that it is released the last. If you are not aggregating, this can lead to situation when you already have no interface pointers outstanding and your filter is destroyed, while application still hold a reference to your inner object.

&lt;blockquote&gt;Also, why does your CSpy reflect the IMediaControl interface? Is this just to get more info, or is there another reason?&lt;/blockquote&gt;

It is not essential to hook this interface for ROT stuff, but additionally to ROT the spy logs all graph calls to log file and here is where it is also convenient to log &lt;i&gt;IMediaControl&lt;/i&gt; method calls: &lt;i&gt;Run&lt;/i&gt;, &lt;i&gt;Stop&lt;/i&gt; etc.</description>
		<content:encoded><![CDATA[<blockquote><p>I’m making a filter that uses TreatAs to hook an existing IBaseFilter derived filter using the same approach as your example (load lib, reflect calls, etc.), and it all works great as long as I return the inner filter’s IBaseFilter (and its base interfaces) when queried (all other queries are passed to the inner object).</p></blockquote>
<p>With an access violation during destruction, the most likely cause is reference counting. You should probably see how you are destroying your object and then receive another call on its interface. And when you return original <i>IBaseFilter</i> you probably don&#8217;t have any reflecting code remained, other than instantiation and QueryInterface. Are you aggregating the filter you are hooking? Basically BaseClasses are not 100% COM compliant (they are coming from long ago and nobody cared to fix this compliance since then). </p>
<p>So if you are aggregating, the might be some [small] issues in COM aggregation compliance, and if you are not aggregating, or the filter you are hooking does not support aggregation, then you must hook all interfaces of interest so that you never expose original one, including those of pins. </p>
<p>The difference between applications might be in an order of calls. For example, some application can obtain pin&#8217;s interface and then through it get owner filter interface and keep it so that it is released the last. If you are not aggregating, this can lead to situation when you already have no interface pointers outstanding and your filter is destroyed, while application still hold a reference to your inner object.</p>
<blockquote><p>Also, why does your CSpy reflect the IMediaControl interface? Is this just to get more info, or is there another reason?</p></blockquote>
<p>It is not essential to hook this interface for ROT stuff, but additionally to ROT the spy logs all graph calls to log file and here is where it is also convenient to log <i>IMediaControl</i> method calls: <i>Run</i>, <i>Stop</i> etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sdg78p</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5710</link>
		<dc:creator>sdg78p</dc:creator>
		<pubDate>Wed, 01 Jul 2009 00:00:33 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5710</guid>
		<description>I&#039;m making a filter that uses TreatAs to hook an existing IBaseFilter derived filter using the same approach as your example (load lib, reflect calls, etc.), and it all works great as long as I return the inner filter&#039;s IBaseFilter (and its base interfaces) when queried (all other queries are passed to the inner object). 

I.e. this works:
...
COM_INTERFACE_ENTRY_FUNC(IID_IBaseFilter, NULL, CFilter::GetBaseFilter)
COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnknown)
...
static HRESULT WINAPI GetBaseFilter(void* pv, REFIID riid, LPVOID* ppv, DWORD dw) throw()
{
	CFilter*	pFilter = reinterpret_cast(pv);
	*ppv = m_pInnerBaseFilter;
	return S_OK;
}

But if I return the reflecting IBaseFilter interface when queried, it works fine in GraphStudio and GraphEdit, but crashes in WMPlayer when the graph is released. 

I.e. this doesn&#039;t work:

...
COM_INTERFACE_ENTRY(IBaseFilter)
COM_INTERFACE_ENTRY(IMediaFilter)
COM_INTERFACE_ENTRY(IPersist)
COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnknown)
...

// reflected interface methods...
STDMETHODIMP EnumPins(IEnumPins **ppEnum)
{ return m_pInnerBaseFilter-&gt;EnumPins(ppEnum); }

... etc.


In both cases, I&#039;m using the same mechanism to load and query the interface on the inner filter object in FinalContruct:

	CComQIPtr pBaseFilter = pUnknown;
	pBaseFilter.p-&gt;Release();

	m_pInnerUnknown = pUnknown;
	m_pInnerBaseFilter = pBaseFilter;


It look like a refcount is off, but I&#039;ve tried bumping the counts to avoid a delete, and it still crashes. Btw, when I bump the counts, GraphEdit reports unreleased objects.

Do you have any insights as to why the filter might work fine in one app, but not in another?

Also, why does your CSpy reflect the IMediaControl interface? Is this just to get more info, or is there another reason?</description>
		<content:encoded><![CDATA[<p>I&#8217;m making a filter that uses TreatAs to hook an existing IBaseFilter derived filter using the same approach as your example (load lib, reflect calls, etc.), and it all works great as long as I return the inner filter&#8217;s IBaseFilter (and its base interfaces) when queried (all other queries are passed to the inner object). </p>
<p>I.e. this works:<br />
&#8230;<br />
COM_INTERFACE_ENTRY_FUNC(IID_IBaseFilter, NULL, CFilter::GetBaseFilter)<br />
COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnknown)<br />
&#8230;<br />
static HRESULT WINAPI GetBaseFilter(void* pv, REFIID riid, LPVOID* ppv, DWORD dw) throw()<br />
{<br />
	CFilter*	pFilter = reinterpret_cast(pv);<br />
	*ppv = m_pInnerBaseFilter;<br />
	return S_OK;<br />
}</p>
<p>But if I return the reflecting IBaseFilter interface when queried, it works fine in GraphStudio and GraphEdit, but crashes in WMPlayer when the graph is released. </p>
<p>I.e. this doesn&#8217;t work:</p>
<p>&#8230;<br />
COM_INTERFACE_ENTRY(IBaseFilter)<br />
COM_INTERFACE_ENTRY(IMediaFilter)<br />
COM_INTERFACE_ENTRY(IPersist)<br />
COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnknown)<br />
&#8230;</p>
<p>// reflected interface methods&#8230;<br />
STDMETHODIMP EnumPins(IEnumPins **ppEnum)<br />
{ return m_pInnerBaseFilter-&gt;EnumPins(ppEnum); }</p>
<p>&#8230; etc.</p>
<p>In both cases, I&#8217;m using the same mechanism to load and query the interface on the inner filter object in FinalContruct:</p>
<p>	CComQIPtr pBaseFilter = pUnknown;<br />
	pBaseFilter.p-&gt;Release();</p>
<p>	m_pInnerUnknown = pUnknown;<br />
	m_pInnerBaseFilter = pBaseFilter;</p>
<p>It look like a refcount is off, but I&#8217;ve tried bumping the counts to avoid a delete, and it still crashes. Btw, when I bump the counts, GraphEdit reports unreleased objects.</p>
<p>Do you have any insights as to why the filter might work fine in one app, but not in another?</p>
<p>Also, why does your CSpy reflect the IMediaControl interface? Is this just to get more info, or is there another reason?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5702</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Tue, 02 Jun 2009 19:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5702</guid>
		<description>&lt;blockquote&gt;Several of your projects include “roatltrace.h” your replacement for . Where is this file, or what are the differences between yours and the original?&lt;/blockquote&gt;

This my file I never yet published.</description>
		<content:encoded><![CDATA[<blockquote><p>Several of your projects include “roatltrace.h” your replacement for . Where is this file, or what are the differences between yours and the original?</p></blockquote>
<p>This my file I never yet published.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sdg78p</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5701</link>
		<dc:creator>sdg78p</dc:creator>
		<pubDate>Tue, 02 Jun 2009 17:46:20 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5701</guid>
		<description>Several of your projects include &quot;roatltrace.h&quot; your replacement for . Where is this file, or what are the differences between yours and the original?</description>
		<content:encoded><![CDATA[<p>Several of your projects include &#8220;roatltrace.h&#8221; your replacement for . Where is this file, or what are the differences between yours and the original?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5696</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Wed, 29 Apr 2009 10:11:52 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5696</guid>
		<description>&lt;blockquote&gt;&lt;a href=http://social.msdn.microsoft.com/Forums/en-US/windowsdirectshowdevelopment/thread/20c7f4a1-b920-4420-9342-9534e5144769/ rel=&quot;nofollow&quot;&gt;however I can no longer&lt;/a&gt; debug my direct show components with visual studio I have tried unregistering filter spy. Does any one have an idea how I can get the debugger to atache to the running graph again? &lt;/blockquote&gt;

&lt;i&gt;regsvr32 /u FilterGraphSpy.dll&lt;/i&gt;

from command line, then try to delete file (if it is still locked, reboot and delete after that). If this does not help, you have other issues in your system that result in your inability to debug.</description>
		<content:encoded><![CDATA[<blockquote><p><a href=http://social.msdn.microsoft.com/Forums/en-US/windowsdirectshowdevelopment/thread/20c7f4a1-b920-4420-9342-9534e5144769/ rel="nofollow">however I can no longer</a> debug my direct show components with visual studio I have tried unregistering filter spy. Does any one have an idea how I can get the debugger to atache to the running graph again? </p></blockquote>
<p><i>regsvr32 /u FilterGraphSpy.dll</i></p>
<p>from command line, then try to delete file (if it is still locked, reboot and delete after that). If this does not help, you have other issues in your system that result in your inability to debug.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5693</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Sun, 29 Mar 2009 21:51:14 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5693</guid>
		<description>&lt;blockquote&gt;I can&#039;t find some heaher file when I compiled the &quot;FilterGraphSpy&quot;.
Such as (#include &quot;roatlbase.h&quot;
#include &quot;roatlvariants.h&quot;
#include &quot;roatlcom.h&quot;
#include &quot;roatlpersist.h&quot;
#include &quot;roatlmisc.h&quot;
#include &quot;roatlexceptionfilter.h&quot;
#include &quot;rowtlapp.h&quot;
#include &quot;rowtlcrack.h&quot;
#include &quot;rodialogs.h&quot;
#include &quot;rocontrols.h&quot;)

Where can I find these files. Can you help me.&lt;/blockquote&gt;

I have not published them, please use binary - it is also in SVN.</description>
		<content:encoded><![CDATA[<blockquote><p>I can&#8217;t find some heaher file when I compiled the &#8220;FilterGraphSpy&#8221;.<br />
Such as (#include &#8220;roatlbase.h&#8221;<br />
#include &#8220;roatlvariants.h&#8221;<br />
#include &#8220;roatlcom.h&#8221;<br />
#include &#8220;roatlpersist.h&#8221;<br />
#include &#8220;roatlmisc.h&#8221;<br />
#include &#8220;roatlexceptionfilter.h&#8221;<br />
#include &#8220;rowtlapp.h&#8221;<br />
#include &#8220;rowtlcrack.h&#8221;<br />
#include &#8220;rodialogs.h&#8221;<br />
#include &#8220;rocontrols.h&#8221;)</p>
<p>Where can I find these files. Can you help me.</p></blockquote>
<p>I have not published them, please use binary &#8211; it is also in SVN.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5667</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Thu, 12 Feb 2009 06:30:04 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5667</guid>
		<description>From a chat:

&lt;blockquote&gt;First of all, I wanna thank you
for ur help to solve some of my prbs with Seeking

Do I need to do  anything extra to make my filter seek for windows media player
coz my filter is performing well for other players
but for windows Media player its not performing the seeking operations
can U guide me regarding this?

other players are seeking
bt windows media player is not performing
I tried to debug it
bt when I seek the control never goes into those methods
what could be the reason?
&lt;/blockquote&gt;

First of all, Windows Media Player might be inserting another filter, which other players don&#039;t insert, and this breaks WMP seeking. You can see WMP&#039;s filter graph using my Filter Graph Spy utility.

A second possible reason is that you don&#039;t fully (for some reason) implement seeking, in which case you should have some weird method called on your filter, what other players don&#039;t do. Or - another interface is queried from your filter, you don&#039;t implement it and return E_NOINTERFACE and that&#039;s all, you don&#039;t receive other calls.</description>
		<content:encoded><![CDATA[<p>From a chat:</p>
<blockquote><p>First of all, I wanna thank you<br />
for ur help to solve some of my prbs with Seeking</p>
<p>Do I need to do  anything extra to make my filter seek for windows media player<br />
coz my filter is performing well for other players<br />
but for windows Media player its not performing the seeking operations<br />
can U guide me regarding this?</p>
<p>other players are seeking<br />
bt windows media player is not performing<br />
I tried to debug it<br />
bt when I seek the control never goes into those methods<br />
what could be the reason?
</p></blockquote>
<p>First of all, Windows Media Player might be inserting another filter, which other players don&#8217;t insert, and this breaks WMP seeking. You can see WMP&#8217;s filter graph using my Filter Graph Spy utility.</p>
<p>A second possible reason is that you don&#8217;t fully (for some reason) implement seeking, in which case you should have some weird method called on your filter, what other players don&#8217;t do. Or &#8211; another interface is queried from your filter, you don&#8217;t implement it and return E_NOINTERFACE and that&#8217;s all, you don&#8217;t receive other calls.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alax</title>
		<link>http://alax.info/blog/777/comment-page-1#comment-5654</link>
		<dc:creator>alax</dc:creator>
		<pubDate>Thu, 29 Jan 2009 18:55:55 +0000</pubDate>
		<guid isPermaLink="false">http://alax.info/blog/?p=777#comment-5654</guid>
		<description>A transcript of related chat:

&lt;blockquote&gt;i&#039;ve just read your post on graph spy

it really sounds very useful

however i&#039;m not shure how to use it

i&#039;ve regsvr32 it, but i haven&#039;t figure it out how use it with other apps&#039;s graphs&lt;/blockquote&gt;

Yes you need to regsvr32 and from this point all new filter graphs should be available on running object table so that you connect to them as to remote graphs using GraphEdit

&lt;blockquote&gt;no additional steps are needed ?
i&#039;ve started some applications and graph edit doesn&#039;t detect any remote graph

maybe rebooting the machine ?&lt;/blockquote&gt;

I don&#039;t think so, but there is another possible cause. Did you at all see any remote graphs using Graph Edit? After upgrading to XP SP3 you might need to run &quot;regsvr32 quartz.dll&quot; to get the ability for GraphEdit to see remote graphs back again

&lt;blockquote&gt;yes, i have some of my own apps with a ROT reference. If i remove the ROT reference from my code i&#039;m still unable to reach the remote graph&lt;/blockquote&gt;

ok, so try regsvr32 quartz.dll from windows\system32 folder and see it this is helpful for both my dll and your apps

&lt;blockquote&gt;ok. btw, i forgot to mention that i&#039;m using Vista SP1&lt;/blockquote&gt;

if you can&#039;t see your own graphs with graphedit through ROT, then there is definitely some problem... as for my dll, except for ROT you can check generated log file in C:\ProgramData (this is hidden dir) if you see it&#039;s populating then my dll is intercepting filter graph instantiations

&lt;blockquote&gt;2009-01-29 12:28:01        0700        4184        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0x63b6327c
2009-01-29 12:28:01        0700        4184        Spy.h(53): CSpy::UpdateRegistry: bRegister 1
2009-01-29 12:28:04        0700        4184        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0x63b6327

this is the log from your dll

I have executed apps several times and i believe it only logged twice. I regsvr32ed quartz.dll and i believe it made no diference. I guess it isn&#039;t populating..&lt;/blockquote&gt;

OK, there may be something different on Vista (I am using XP but I was pretty sure it is the same way on Vista) or wrong with the system since you don&#039;t see remote graphs
BTW you need to regsvr32 from elevated admin command prompt (this is to make sure).

&lt;blockquote&gt;yes,i did it on an admin console. I going to try on XP...

ok, i installed your dll on a xp system, executed SDP download, still can&#039;t access the remote graph, however the FilterGraphSpy.log is diferent

2009-01-29 17:50:13        13684        13576        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0x0098327c
2009-01-29 17:50:13        13684        13576        Spy.h(53): CSpy::UpdateRegistry: bRegister 1
2009-01-29 17:50:14        13684        13576        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0x0098327c
2009-01-29 17:51:57        14080        13896        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0x00de327c
2009-01-29 17:51:57        14080        13896        Spy.h(75): CSpy::CSpy: this 0x00e03d78
2009-01-29 17:51:57        14080        13896        Spy.h(142): CSpy::EnumFilters: ...
2009-01-29 17:52:11        14080        13896        Spy.h(79): CSpy::~CSpy: this 0x00e03d78
2009-01-29 17:52:11        14080        13864        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0x00de327c
2009-01-29 17:52:48        13716        13772        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0x0098327c
2009-01-29 17:52:48        13716        13772        Spy.h(53): CSpy::UpdateRegistry: bRegister 0
2009-01-29 17:52:49        13716        13772        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0x0098327c&lt;/blockquote&gt;

e.g. there is &quot;CSpy::EnumFilters: ...&quot; which means that it actually worked
there is no other way for these lines to appear in the log other than if the graph is hooked by my dll and it is intercepting all filter graphs

BTW if you run MEdia Player Classic, it also publishes its graph on ROT
and with my DLL you will have two entries there, both point to the same graph

&lt;blockquote&gt;ok
on the xp system i don&#039;t have the wmp classic installed,
i  have the 11.0.57. version only
i&#039;m reaching the remote graph with graphedit
i don&#039;t quite know if this your dll responsability
i guess not
your log remains the same&lt;/blockquote&gt;</description>
		<content:encoded><![CDATA[<p>A transcript of related chat:</p>
<blockquote><p>i&#8217;ve just read your post on graph spy</p>
<p>it really sounds very useful</p>
<p>however i&#8217;m not shure how to use it</p>
<p>i&#8217;ve regsvr32 it, but i haven&#8217;t figure it out how use it with other apps&#8217;s graphs</p></blockquote>
<p>Yes you need to regsvr32 and from this point all new filter graphs should be available on running object table so that you connect to them as to remote graphs using GraphEdit</p>
<blockquote><p>no additional steps are needed ?<br />
i&#8217;ve started some applications and graph edit doesn&#8217;t detect any remote graph</p>
<p>maybe rebooting the machine ?</p></blockquote>
<p>I don&#8217;t think so, but there is another possible cause. Did you at all see any remote graphs using Graph Edit? After upgrading to XP SP3 you might need to run &#8220;regsvr32 quartz.dll&#8221; to get the ability for GraphEdit to see remote graphs back again</p>
<blockquote><p>yes, i have some of my own apps with a ROT reference. If i remove the ROT reference from my code i&#8217;m still unable to reach the remote graph</p></blockquote>
<p>ok, so try regsvr32 quartz.dll from windows\system32 folder and see it this is helpful for both my dll and your apps</p>
<blockquote><p>ok. btw, i forgot to mention that i&#8217;m using Vista SP1</p></blockquote>
<p>if you can&#8217;t see your own graphs with graphedit through ROT, then there is definitely some problem&#8230; as for my dll, except for ROT you can check generated log file in C:\ProgramData (this is hidden dir) if you see it&#8217;s populating then my dll is intercepting filter graph instantiations</p>
<blockquote><p>2009-01-29 12:28:01        0700        4184        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0&#215;63b6327c<br />
2009-01-29 12:28:01        0700        4184        Spy.h(53): CSpy::UpdateRegistry: bRegister 1<br />
2009-01-29 12:28:04        0700        4184        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0&#215;63b6327</p>
<p>this is the log from your dll</p>
<p>I have executed apps several times and i believe it only logged twice. I regsvr32ed quartz.dll and i believe it made no diference. I guess it isn&#8217;t populating..</p></blockquote>
<p>OK, there may be something different on Vista (I am using XP but I was pretty sure it is the same way on Vista) or wrong with the system since you don&#8217;t see remote graphs<br />
BTW you need to regsvr32 from elevated admin command prompt (this is to make sure).</p>
<blockquote><p>yes,i did it on an admin console. I going to try on XP&#8230;</p>
<p>ok, i installed your dll on a xp system, executed SDP download, still can&#8217;t access the remote graph, however the FilterGraphSpy.log is diferent</p>
<p>2009-01-29 17:50:13        13684        13576        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0&#215;0098327c<br />
2009-01-29 17:50:13        13684        13576        Spy.h(53): CSpy::UpdateRegistry: bRegister 1<br />
2009-01-29 17:50:14        13684        13576        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0&#215;0098327c<br />
2009-01-29 17:51:57        14080        13896        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0&#215;00de327c<br />
2009-01-29 17:51:57        14080        13896        Spy.h(75): CSpy::CSpy: this 0&#215;00e03d78<br />
2009-01-29 17:51:57        14080        13896        Spy.h(142): CSpy::EnumFilters: &#8230;<br />
2009-01-29 17:52:11        14080        13896        Spy.h(79): CSpy::~CSpy: this 0&#215;00e03d78<br />
2009-01-29 17:52:11        14080        13864        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0&#215;00de327c<br />
2009-01-29 17:52:48        13716        13772        dllmain.h(29): CFilterGraphSpyModule::CFilterGraphSpyModule: this 0&#215;0098327c<br />
2009-01-29 17:52:48        13716        13772        Spy.h(53): CSpy::UpdateRegistry: bRegister 0<br />
2009-01-29 17:52:49        13716        13772        dllmain.h(33): CFilterGraphSpyModule::~CFilterGraphSpyModule: this 0&#215;0098327c</p></blockquote>
<p>e.g. there is &#8220;CSpy::EnumFilters: &#8230;&#8221; which means that it actually worked<br />
there is no other way for these lines to appear in the log other than if the graph is hooked by my dll and it is intercepting all filter graphs</p>
<p>BTW if you run MEdia Player Classic, it also publishes its graph on ROT<br />
and with my DLL you will have two entries there, both point to the same graph</p>
<blockquote><p>ok<br />
on the xp system i don&#8217;t have the wmp classic installed,<br />
i  have the 11.0.57. version only<br />
i&#8217;m reaching the remote graph with graphedit<br />
i don&#8217;t quite know if this your dll responsability<br />
i guess not<br />
your log remains the same</p></blockquote>
]]></content:encoded>
	</item>
</channel>
</rss>
