Turn Monitor on/off in Vista/7

I need to turn off the monitor while the machine still receives input via mouse or keyboard.
While turning off the monitor would pretty easy via the WinAPI call
SendMessage (m_hWnd,WM_SYSCOMMAND,SC_MONITORPOWER, 2 )
Make sure that it stays off while receiving input (mouse movement)is not.
Thats why I need my own driver.

My approach was to write a monitor function driver (which replaces monitor.sys on Vista/7) or an upper filter driver on top where I can trigger
the monitor on/off via a call with

retval = PoRequestPowerIrp( pDevExt->Pdo,
IRP_MN_SET_POWER,
PState,
CompletePower,
NULL,
NULL );
where PState is PowerDeviceD3 or PowerDeviceD0.

This call is triggered in the DispatchWrite function which gets called when I write to the device form a user mode app.
While the (function)driver works as expected with XP, with Vista/7 it doesn’t(function and filter).
Vista/7 behavior:
Good: PowerDeviceD3 works -> monitor turns off.
Bad: PowerDeviceD0 won’t work afterwards anymore - the monitor stays off and after a few seconds the desktop on the second monitor will freeze. But I can still move the mouse then and even switch to the Logon Screen (Ctrl+Alt+Del). Switching back will result in a black screen. Even Num Lock still reacts a reboot is neccessarry anyway.

As this is my first driver I appreciate any help.