private static extern HRESULT _DwmGetCompositionTimingInfo(IntPtr hwnd, ref DWM_TIMING_INFO pTimingInfo);
public static DWM_TIMING_INFO? DwmGetCompositionTimingInfo(IntPtr hwnd) { if (!Utility.IsOSVistaOrNewer) { // API was new to Vista. return null; } var dti = new DWM_TIMING_INFO { cbSize = Marshal.SizeOf(typeof(DWM_TIMING_INFO)) }; HRESULT hr = _DwmGetCompositionTimingInfo(hwnd, ref dti); if (hr == HRESULT.E_PENDING) { // The system isn't yet ready to respond. Return null rather than throw. return null; } hr.ThrowIfFailed(); return dti; }