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