Problem with WMS data source plugin - it doesn't get called if no



I'm using Windows Media Server, and have created a data source plugin
(IWMSDataSourcePlugin) based on the Microsoft example.


My goal with this data source plugin is to have a windows media server which
- if the files are present on disk - read them off disk - the way Windows
Media Server does by default - but if they are not present on disk - to proxy
them from someplace else.



I used the sample plugin Microsoft provided, and changed the 'protocol'
supported to be 'file://' (instead of sample://).



I disabled the builtin plugin, and now mine works fine - for the case where
the files exist.



The API appears to be designed (and the same code implemented) in such a way
- that its quite natural if the code should get called with a filename that
doesn't exist. It just returns an error in the OpenDataContainer () method.



However - I've found - that if the file doesn't exist - Windows Media Server
(WMS) - just returns a 404 - and never calls the data plugin!



I also have implemented an authorization plugin - and I've noted THAT does
get called (for files that don't exist). The access is AUTHORIZED. But WMS
never goes on to the step of calling the data source plugin!



My GUESS - is that this is a bug with WMS - in that it implements PART of
the file logic inline - in the WMS app - and part in the WMS File Data Source
plugin. Its either that - or there is some weird registry setting or
interface that I need to support, but I've tried my best to copy the registry
settings made by the WMS File Data Source Plugin, and I've intercepted/logged
the QueryInterface () methods from WMS onto my plugin - and I'm not rejecting
any.



I DO have a KLUDGE - I can do - which is to CREATE the file in the WMS Auth
plugin (I haven't tried but it seems that would likely work). But - that
causes a number of difficulties - and I'm hoping to avoid it. Perhaps I can
make this less of a kludge if I do the EVENT_FILE_TRANSFORM stuff in teh auth
plugin, but I don't see why that should be necessary, and would require a lot
of testing (to be sure that transform stuff always works OK - with any
client).






.