I am considering design choices about controlling custom aspects of a USB2
camera. This camera driver is based on usbcamd2 and is currently proxied by
ksproxy. The intent is to create ksproxy plug-ins to result in the
following:
1) 1 or more property pages such that amcap, graphedit or the like can set
these custom properties and
2) A way to programmatically set these same properties from a dshow filter
via some method.
Regarding the programmatic control of the filter:
a) Is it better to create a custom interface so that from the client filter
I can QI the base capture filter or is it better to QI the base capture
filter for IKsPropertySet and set the properties directly? The first choice
would seem better as it would introduce a layer of indirection such that
there would not be such a tight coupling between the minidriver and its
usermode clients.
b) If I were to use the custom interface, would it be better to implement it
via IKsPropertySet or via KsGetObjectHandle and issue IOCTL_KS_PROPERTY?
They seem identical.
Regarding ksproxy plugins in general. What is the mechinism linking the
extension COM objects to ksproxy? The examples I have seen all seem to have
an exact correspondence between one propertyset GUID in the minidriver with
one custom interface and one property page. Is this always the case? Are
the following alternatives possible:
1) A custom interface but with no associated property set?
2) Multiple custom property pages associated with a single property set?
3) A single propertyset with any number of interfaces and property pages
hung off it?
These questions reflect uncertainty about my ability to implement my current
thinking which is:
1) Add a one or more propertyset GUIDs to the minidriver to implement the
custom aspects of the camera.
2) Have a single custom COM interface in usermode to permit programatic
access to those aspects.
3) Have one or more property pages to permit amcap etc to access to aspects.
These property sheets would be implemented by using the custom inteface.
Regards,
Tom Udale