gpt4 book ai didi

c++ - "UWP"和 "Immersive"app 是同一个东西吗?如果不是,有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 21:12:26 28 4
gpt4 key购买 nike

我正在尝试理解 Microsoft 使用的术语。当IsImmersiveProcess返回 TRUE 是否也意味着该进程是一个 UWP 应用程序,由 TokenIsAppContainer 报告查询其 token ?

这是一个小代码片段来说明我的意思:

HANDLE hProc = ::OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (hProc)
{
HANDLE hToken;
if (::OpenProcessToken(hProc, TOKEN_QUERY, &hToken))
{
DWORD dwAppContainer = 0;
DWORD dwDummy = 0;
if (::GetTokenInformation(hToken, TokenIsAppContainer, &dwAppContainer, sizeof(dwAppContainer), &dwDummy))
{
wprintf(L"isUWP=%d\n", dwAppContainer);
}

::CloseHandle(hToken);
}

wprintf(L"isImmersive=%d\n", ::IsImmersiveProcess(hProc));

::CloseHandle(hProc);
}

换句话说,进程是否可以是 UWP 而不是 Immersive,反之亦然?

编辑:查看 IsImmersiveProcess API 内部显示了以下非常简单的逻辑。不幸的是,NtUserGetProcessUIContextInformationPROCESS_UICONTEXT_INFORMATION 似乎没有记录。我只能猜测值 0 代表“常规”Win32 进程,12 代表 immersive 应用程序.不确定 12 有何不同?

enter image description here

EDIT2: 根据 eryksun在下面的注释中可以找到 NtUserGetProcessUIContextInformation 函数可能已这样声明:

enum PROCESS_UICONTEXT{
PROCESS_UICONTEXT_DESKTOP = 0,
PROCESS_UICONTEXT_IMMERSIVE,
PROCESS_UICONTEXT_IMMERSIVE_BROKER,
PROCESS_UICONTEXT_IMMERSIVE_BROWSER
};

enum PROCESS_UI_FLAGS{
PROCESS_UIF_NONE = 0,
PROCESS_UIF_AUTHORING_MODE,
PROCESS_UIF_RESTRICTIONS_DISABLED
};

struct PROCESS_UICONTEXT_INFORMATION{
PROCESS_UICONTEXT Context;
PROCESS_UI_FLAGS flags;
};

BOOL WINAPI NtUserGetProcessUIContextInformation(HANDLE hProc, PROCESS_UICONTEXT_INFORMATION* pProcInfo);

最佳答案

“沉浸式”是 UWP 应用程序的旧名称。这是它们在 Windows 8 上的初始名称,之后称它们为“metro”、“store”,然后是“universal”应用。

来自商店并基于 WinRT API 的任何应用都是“沉浸式”应用。之所以选择沉浸式,是因为该应用程序是在 Windows 8 上全屏执行的。

MSDN 文档正在消除歧义:

IsImmersiveProcess function

Determines whether the process belongs to a Windows Store app.

MSDN 页面可用于 IsImmersiveProcess

总结:

  • 所有 Store/WinRT/UWP 应用程序都在应用程序容器中运行。这是由操作系统强制执行的。
  • 旧版 win32 应用程序可以选择在应用程序容器中运行以提高其安全性。每个应用都必须决定它想要什么。

关于c++ - "UWP"和 "Immersive"app 是同一个东西吗?如果不是,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47389164/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com