From: Ivan Brugiolo [MSFT] on
> - Is there a Wmi method/class which can be used to shut off a
> monitor.
No. The power states are implemented through internal ioclt to the monitor
class driver, that will use whichever mechanism is appropriate to
perform the actual action.

> - When you say "PnP-stop the physical video-card of the
> machine while your virtual display-device is loaded" do you mean to
> say that stop your native display driver and let your virtual display
> driver (which might be a mirror driver)?

Yes, but, in that case the virtual display cannot be a mirror one.
It has to be a virtual `real` display.

> And miniport would
> be using its I2C interface to shutoff the monitor.
A miniport can use whatever is appropriate for the implementation.
I have seen ACPI methods as well as proprietary solutions.
--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm


"Kalra" <kalra.apoorv(a)gmail.com> wrote in message
news:66f898f1-ee36-488b-aff3-01d1285214ab(a)j24g2000yqa.googlegroups.com...
> Hi Ivan,
>
> I am new to google groups and found interesting discussions going on
> here. This one is a relevant to what i am trying to do.
>
> Few queries regarding your post:
> - Is there a Wmi method/class which can be used to shut off a
> monitor. I have read only about setting brightness through Wmi? If you
> are referring to SetPowerState Method of the CIM_DesktopMonitor I
> don't think this method is provided by Wmi by default. Correct me if
> wrong?
> - When you say "PnP-stop the physical video-card of the
> machine while your virtual display-device is loaded" do you mean to
> say that stop your native display driver and let your virtual display
> driver (which might be a mirror driver)?
>
> By the way I was curious to know how does Control Panel--> Power
> Options--> Timer switch off the monitor and I took call stack to read
> that DispatchPower of monitor internally calls DispatchPower of
> dxgkrnl which would obviously end up in miniport. And miniport would
> be using its I2C interface to shutoff the monitor.
>
> -Autumn

From: Kalra on
Thanks for your reply Ivan. Though you said it is an restricted
territory, I tried to tweak a little bit here and there to achieve the
goal same as vikash. I wrote a kind of filter driver which sits on top
of monitor class driver ( using IoRegisterPlugPlayNotification and
IoAttachDeviceToDeviceStack). Now I could see all the IRPs going down
to Dispatch and Dispatch Internal of monitor device stack. Using all
this I could see a private Ioctl being sent to its Dispatch Internal
and this i guess is sent by the display adapter. Well I tried all this
without being part of the stack too where I just hooked Dispatch
internal of monitor class function driver to see what IRP was coming
to it on being blanked. The Ioctl was same. But now if I build a I/o
request with this same Ioctl code and send it to monitor class
function driver it would blank it for few seconds and unblank it with
a popup saying nvidia kernel mode display driver has crashed and
recovered (http://www.microsoft.com/whdc/device/display/
wddm_timeout.mspx). Why does this happen? What am I missing here?
From: Ivan Brugiolo [MSFT] on
You are missing the integration with Watchdog.sys
and/or Timeout-Device-Recovery that is provided by proper integration
with Win32k.sys and the part that normally is issuing the IOCLTs.
Basically you have TDR-ed the device.
Please, do not attempt to further compromise the already
pale experience with display devices that users have by adding
new kind of hooks and deviations for the tested paths.
--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm


"Kalra" <kalra.apoorv(a)gmail.com> wrote in message
news:b4d7171c-d43d-42fc-941f-08d9a1cd4b1d(a)k19g2000yqc.googlegroups.com...
> Thanks for your reply Ivan. Though you said it is an restricted
> territory, I tried to tweak a little bit here and there to achieve the
> goal same as vikash. I wrote a kind of filter driver which sits on top
> of monitor class driver ( using IoRegisterPlugPlayNotification and
> IoAttachDeviceToDeviceStack). Now I could see all the IRPs going down
> to Dispatch and Dispatch Internal of monitor device stack. Using all
> this I could see a private Ioctl being sent to its Dispatch Internal
> and this i guess is sent by the display adapter. Well I tried all this
> without being part of the stack too where I just hooked Dispatch
> internal of monitor class function driver to see what IRP was coming
> to it on being blanked. The Ioctl was same. But now if I build a I/o
> request with this same Ioctl code and send it to monitor class
> function driver it would blank it for few seconds and unblank it with
> a popup saying nvidia kernel mode display driver has crashed and
> recovered (http://www.microsoft.com/whdc/device/display/
> wddm_timeout.mspx). Why does this happen? What am I missing here?