XDisplayAcquireTimeoutDeferral

获取屏幕超时延迟。

语法

HRESULT XDisplayAcquireTimeoutDeferral(  
         XDisplayTimeoutDeferralHandle* handle  
)  

参数

handle _Out_
类型:XDisplayTimeoutDeferralHandle*

指向屏幕超时延迟句柄的指针。

返回值

类型:HRESULT

如果成功,则返回 S_OK;否则返回错误代码。 有关错误代码的列表,请参阅错误代码

备注

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

屏幕超时延迟可确保屏幕在用户未操作期间不会变暗、锁定或断电。 在经过一定的空闲时间后,屏幕超时将发生。 为响应屏幕超时,设备可能使显示器变暗、激活锁定屏幕或关闭显示器电源。 屏幕超时前所需的空闲时间取决于设备的用户设置。 如果您的游戏正在执行不需要用户交互的活动,例如加载游戏资源或显示长剪辑画面,则屏幕超时可能会很不方便。 您可以通过获取屏幕超时延迟来防止屏幕超时。

要获取屏幕超时延迟,请先调用 XDisplayAcquireTimeoutDeferral 以获取屏幕超时延迟的句柄,然后调用 XDisplayCloseTimeoutDeferralHandle 以便在不再需要之后关闭该句柄。 如果游戏失去焦点,则忽略屏幕超时延迟;如果游戏退出,则释放它们。

注意

如果使用此函数获取屏幕超时延迟句柄,则必须通过调用 XDisplayCloseTimeoutDeferralHandle 来关闭该句柄。 可以获取多个屏幕超时延迟句柄,并且仅在关闭所有屏幕超时延迟句柄后才为游戏启用屏幕超时。

注意

当游戏正在主动调试时,屏幕不会变暗。

下面的示例将在调用 XDisplayAcquireTimeoutDeferral 以便获取一个新的屏幕超时延迟句柄后,播放较长的介绍性剪辑画面。 如果成功获取新句柄,则可以在没有由于用户未操作而屏幕超时的情况下播放较长的介绍性剪辑画面。 在该剪辑画面完成播放后,该示例将调用 XDisplayCloseTimeoutDeferralHandle 以关闭该句柄。 在关闭了所有屏幕超时延迟句柄后,屏幕超时可能会由于用户再次无操作而发生。

void Game::PlayIntroCutscene()
{
    XDisplayTimeoutDeferralHandle handle;

    // Try to acquire a new timeout deferral handle.
    if (SUCCEEDED(XDisplayAcquireTimeoutDeferral(&handle)))
    {
        // The newly-opened timeout deferral handle prevents the display
        // from dimming over the game if the user goes idle.
        // 
        // At this point, the long intro cutscene can play without dimmming.
    }

    // Once the cutscene has completed playing, 
    // close the the timeout deferral handle.
    XDisplayCloseTimeoutDeferralHandle(handle);

    // If there are no open timeout deferral handles, the display can
    // once again dim over the game if the user goes idle.
}

要求

头文件:XDisplay.h

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XDisplayCloseTimeoutDeferralHandle
XDisplay