1

我正在维护一个旧应用程序,除其他外,它在屏幕上显示微小的视频源。该应用程序工作正常,除非您在通过 RDP 查看桌面时运行它。

IDirectDrawSurface7当我们通过Lock函数获取写指针时:

DDSURFACEDESC2 dsd;
ZeroMemory(&dsd, sizeof(dsd));
dsd.dwSize = sizeof(dsd);
hr = m_pSurface->Lock(NULL, &dsd, DDLOCK_NOSYSLOCK|DDLOCK_WRITEONLY/*|DDLOCK_DONOTWAIT*/, NULL);

除非您通过 RDP 连接到系统,否则一切正常。在这种情况下,锁定失败,HRESULTof DDERR_WASSTILLDRAWING

MSDN 页面上的注释指出,只有在“默认条件”下,使用该标志时才会发生此错误DDLOCK_DONOTWAIT,我已将其诊断注释掉。

是否有希望在不进行重大重新设计的情况下让该应用程序在 RDP 8 / Windows 7 上运行?

打开应用程序并连接新的 RDP 会话以及通过现有 RDP 会话启动应用程序都会导致此行为。

4

0 回答 0