Video Miniport question

Hi.
I am currently implementing a video miniport driver that I would like to send an IOCTL to from another driver (a regular system driver). Anyone know of a way to do this (or is it just not possible)?

Ex.)
—IOCTL CALL—> Video Port Driver —> Video Miniport driver

I would like to pass the call through the video port driver to prevent breaking the whole “port-miniport” model if possible…
Does anyone know if it is possible to allocate an IRP of type IRP_MJ_DEVICE_CONTROL and send it to the video port driver to accomplish this task, or is there a better way? Or if anyone has any good resources for documentation on video miniports please let me know!

Thanks,
sean

You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> I am currently implementing a video miniport driver that I would like to send an IOCTL to from another driver (a regular system driver). Anyone know of a way to do this (or is it just not possible)?

Ex.)
—IOCTL CALL—> Video Port Driver —> Video Miniport driver
>
> I would like to pass the call through the video port driver to prevent breaking the whole “port-miniport” model if possible…
> Does anyone know if it is possible to allocate an IRP of type IRP_MJ_DEVICE_CONTROL and send it to the video port driver to accomplish this task, or is there a >better way? Or if anyone has any good resources for documentation on video miniports please let me know!

Here are a couple of suggestions. Make your video miniport driver a honest to goodness full blown NT driver and “hide” your video miniport driver inside of it.

To activate the “video miniport” call StreamClassRegisterAdapter() and provide your “honest to goodness” DriverObject and fill out your HwInitData structure with your ReceivePacket, CancelPacket, TimeoutHandler, DeviceExtension size, etc.

StreamClassRegisterAdapter() will then register your video miniport and start calling your entry points. You will, of course, now have to contend with all of the regular NT driver stuff, such as your IOCTL routines, etc. as filled in the DriverObject by your DriverEntry routine. Once you do this, you can communicate to your video miniport driver just as if it were a regular system driver (because, of course, it is!).

Another way to do this, would be to set up “private communication” between your video miniport and the “regular system driver”. This would simply involve exporting a routine from your video miniport (ala -export:routinename via the linker). You would then link your regular system driver against the .LIB from your video miniport and voila you can call the video miniport from your “regular system driver”. The rub here, of course, is that your video miniport would either a) have to load prior to your regualr system driver -or- b) be dragged into the system by the loader to resolve the external from your “regular system driver”.

Hope this helps.

Thomas “Rick” Tewell
Ligos Corporation


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

xxxxx@stg.com:

I am currently implementing a video miniport driver that I would like
to send an IOCTL to from another driver (a regular system
driver). Anyone know of a way to do this (or is it just not possible)?

Ex.)
—IOCTL CALL—> Video Port Driver —> Video Miniport driver

Good question! I’ve often wondered the same thing myself. I may be
wrong but I’ve a feeling that the video port driver is exclusively
opened in behalf of the corresponding display driver - so you may not
even be able to create/open the video port driver from another system
driver. The display driver isn’t exactly accessible from other system
drivers either, so it isn’t even obvious how you might get it to act
as an intermediary.

If I’m wrong someone please tell me.

I’ve been thwarted by this one a number of times, so if anyone has
acheived this I’d certainly be interesting in hearing how - especially
if it doesn’t break ‘the whole “port-miniport”’ model.

Re: documentation. Aside from the DDK and knowledge base articles
there’s a (all too) short chapter in the OSR Windows NT Device Driver
Development book. It’s a pretty good overview/introduction more than
it is reference. The only other documentation I’ve seen is code.

Gordon


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com