阅读:2619回复:17
显示驱动与休眠问题
自己写了个显卡驱动(虚拟的),工作正常,但装上后在关机菜单里hibernate没有了,出现了灰掉的standby。 卸掉就恢复正常,hibernate也工作。
miniport里实现了SetPowerState和GetPowerState。 在设备管理器里看,该驱动支持D0和D3状态 用powercfg /devicequery S4_supported 也能看到。但powercfg /h on却显示不支持休眠。 请高手指点如何支持休眠。 谢了 |
|
沙发#
发布于:2008-04-27 02:41
很多驱动对电源管理都没有特别支持。
所以你能找到的资料可能就仅限于DDK的帮助了。 也正是因为这个原因,所以要处理好是需要做不少调试的。 |
|
|
板凳#
发布于:2008-04-28 13:48
有没有什么地方是显示驱动特别的,象显示模式或者vgabios方面不知道有没要求。
从ddk来看只是要实现SetPowerState等三个函数就可以了。 |
|
地板#
发布于:2008-05-03 09:27
显示模式在dll的DrvAssertMode中实现,你所谓的虚拟显卡是什么方式的?Mirror,Hook,Filter还是严格概念的虚拟驱动,因为很长时间来很多人把上面提到的都说成是虚拟显卡驱动。这些驱动使用了不同的技术,实现细节也大不相同。
|
|
|
地下室#
发布于:2008-07-06 17:31
应该是严格的虚拟驱动,会跟有个代理通讯去驱动真正的硬件
|
|
5楼#
发布于:2008-07-08 17:28
你说的"装上后在关机菜单里hibernate没有了,出现了灰掉的standby"具体指什么地方?我也有做过虚拟显示驱动,安装后扩展一个桌面的那种,但没有注意到你说的问题,也没有你说的2003的问题(至少目前还没有发现)
|
|
|
6楼#
发布于:2008-07-15 11:57
你在开始菜单里选择关机,会弹出个对话框,里面有三个选项:休眠,重起,关机。装完驱动后,休眠就被换成了待机了,而且图标是灰掉的
|
|
7楼#
发布于:2008-07-15 15:54
我的电脑驱动安装前后都是“待机”,并且“待机”都是可以用的,并不是“灰”的
|
|
|
8楼#
发布于:2008-07-15 16:09
你看下是不是“待机”具有输入焦点,你可以用鼠标在“待机”上按下,然后移动到空位置释放,看看“待机”按扭是不是可以选择的
另外你是在VM中还是非VM中测试? |
|
|
9楼#
发布于:2008-07-15 16:15
另外,你的系统好象是英文的?我找个英文系统看看
|
|
|
10楼#
发布于:2008-07-15 17:37
请确认:
在选择“关闭计算机”并显示“关闭计算机”窗口后,先后按下SHIFT+$、SHIFT+I(大写i),看是否可以进行“休眠/待机”切换。 你也可以参考 “ http://tech.ddvip.com/2007-08/118716876231918.html ”中介绍的方法将“休眠”和“待机”都显示出来 |
|
|
11楼#
发布于:2008-07-15 17:40
Windows会在支持Standby的机器上使用Standby代替Hibernate,所以我的机器上只有显示Standby(即中文OS的待机),我有测试过,通过SHIFT+$,I是可以切换为Hibernate 的
|
|
|
12楼#
发布于:2008-07-16 10:29
测试了英文版本的XP,驱动也可以正常工作,安装前后都是Standby(可通过SHIFT+$,I来切换)
另外,我测试的系统均是Windows XP专业版+SP3,打了所有补丁。 |
|
|
13楼#
发布于:2008-07-18 11:23
安装驱动前
图片:before-install.JPG 安装驱动后 图片:after-install.JPG 你上面说的 试过,还是不行。 另外我是在vm中 |
|
14楼#
发布于:2008-07-18 23:51
I have test my project in Windows XP, but It is correct when I switch it by SHIFT+$,I
Please try it again,thanks |
|
|
15楼#
发布于:2008-07-21 18:06
帮忙看一下这三个函数实现有没有问题?
VP_STATUS VideoGetPowerState( PVOID HwDeviceExtension, ULONG HwId, PVIDEO_POWER_MANAGEMENT VideoPowerControl ) { return NO_ERROR; } VP_STATUS VideoSetPowerState( PVOID HwDeviceExtension, ULONG HwId, PVIDEO_POWER_MANAGEMENT VideoPowerControl ) { return NO_ERROR; } VP_STATUS VideoGetChildDescriptor( PVOID HwDeviceExtension, PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, PVIDEO_CHILD_TYPE VideoChildType, PUCHAR pChildDescriptor, PULONG pUId, PULONG pUnused ) { if (ChildEnumInfo->ChildIndex == DISPLAY_ADAPTER_HW_ID) { *VideoChildType = VideoChip; *pUId = DISPLAY_ADAPTER_HW_ID; return VIDEO_ENUM_MORE_DEVICES; } return (ERROR_NO_MORE_DEVICES); } |
|
16楼#
发布于:2008-07-23 09:17
这几个函数虽然很简单,但应该没有什么问题。
顺便问下,你给出代码的驱动是XPDM的, 那么你有实现Aero吗?另外你有实现支持WDDM的虚拟驱动吗? |
|
|
17楼#
发布于:2008-07-23 09:24
方便可以Mail或者MSN交流,我发个第3方公司做的产品给你测试下,看在你的系统中是有你说的问题,很抱歉我不能直接提供我做的产品给你测试,因为为公司产品保密是每个具有基本职业道德的员工必须做到的,尽请理解。
|
|
|