用directX截屏,截取到屏幕播放视频区域是黑色,如何解决,多谢

用directX截屏,截取到屏幕播放视频区域是黑色,怎么解决,谢谢!
{ HRESULT hr;
   
  // Get adapter display mode
  D3DDISPLAYMODE mode;
  if (FAILED(hr = lpDevice->GetDisplayMode(0, &mode)))
  return hr;
 
  // Create the surface to hold the screen image data
  LPDIRECT3DSURFACE9 surf;
  if (FAILED(hr = lpDevice->CreateOffscreenPlainSurface(mode.Width, 
  mode.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surf, NULL))) //注意第四个参数不能是D3DPOOL_DEFAULT
  {
  return hr;
  }
 
  // Get the screen data
  if (FAILED(hr = lpDevice->GetFrontBufferData(0, surf))) 
  {
  surf->Release() ;
  return hr ;
  }
 
  // area to capture
  RECT *rect = NULL ;
 
  WINDOWINFO windowInfo ;
  windowInfo.cbSize = sizeof(WINDOWINFO) ;
 
  if(hWnd) // capture window
  {
  GetWindowInfo(hWnd, &windowInfo) ;
  rect = &windowInfo.rcWindow ;
  }
 
  // Save the screen date to file
  hr = D3DXSaveSurfaceToFile("123.bmp", D3DXIFF_BMP, surf, NULL, rect);
 
  surf->Release() ;
 
  return hr ;
 }

上面的代码能实现截取屏幕,但是如果屏幕中有视频在播放时,截取到屏幕中播放视频的区域是黑色的,请问怎么解决,求指点,谢谢!

------解决方案--------------------
视频一般使用 DirectShow 硬件加速,截屏是截不到的。
------解决方案--------------------
使用了overlay的硬件加速模式.

解决方式:
1.关闭硬件加速
2.使用hook.

更多的方式暂时没想到