DirectDrawSurface7在win7 64位与win8上的问题

时间:2021-06-14 18:52:36
问题如下:使用DirectDraw来做显示,一块primary surface(ps), 两块offscreen surface(os),如果os在创建时是放在显存中,在操作系统做屏保操作后,对os的lock,blt等操作将导致异常(应该不会是什么低级的越界导致的).如果是os放在内存中,没有异常,但是显示时只能显示第一次,后面的blt返回值都正确,并且isLost返回也是S_OK,但是就是看不到图像的刷新.
   PS:这些问题在win7 32位和部分win7 64位,部分win8上也不会出现,并且不是概率性事件,会出的机器上每次必出,不会的机器上一直无法重现.

8 个解决方案

#1


来自己顶一个先

#2


不能用trycatch屏蔽掉么!

#3


引用 2 楼 sha_jinhao 的回复:
不能用trycatch屏蔽掉么!

能屏蔽掉,但是此后再调用DirectDrawCreateEx就一直阻塞不返回了,很无语.

#4


难道还跟硬件驱动等有关系?

#5


引用 4 楼 oyljerry 的回复:
难道还跟硬件驱动等有关系?

头疼的很,显示部分也没多少代码,就是创建几个surface,简单操作,这都稳定跑了好几年了,最近这win7更新,还有win8,就出问题了

#6


自己顶一下,看看能碰上正好有这方面经验的高人不

#7


不是说drectdraw已经被d2d替换了吗?

#8


win7和win8出现这个现象的原因是:
禁用桌面窗口管理器:window的areo主题变成了window base主题后,调用DirectDraw的任何接口都会出现阻塞现象。
知道原因不知道怎么解决,郁闷

#1


来自己顶一个先

#2


不能用trycatch屏蔽掉么!

#3


引用 2 楼 sha_jinhao 的回复:
不能用trycatch屏蔽掉么!

能屏蔽掉,但是此后再调用DirectDrawCreateEx就一直阻塞不返回了,很无语.

#4


难道还跟硬件驱动等有关系?

#5


引用 4 楼 oyljerry 的回复:
难道还跟硬件驱动等有关系?

头疼的很,显示部分也没多少代码,就是创建几个surface,简单操作,这都稳定跑了好几年了,最近这win7更新,还有win8,就出问题了

#6


自己顶一下,看看能碰上正好有这方面经验的高人不

#7


不是说drectdraw已经被d2d替换了吗?

#8


win7和win8出现这个现象的原因是:
禁用桌面窗口管理器:window的areo主题变成了window base主题后,调用DirectDraw的任何接口都会出现阻塞现象。
知道原因不知道怎么解决,郁闷