-3

今天我想知道为什么 GFlags 选项Stop on hang GUI出现在GFlags 用户界面的Kernel Flags选项卡中。内核是否有可能挂起的 GUI?

所以我试图从微软那里得到一些信息,但MSDN 只是说

在 GFlags 中出现停止挂起 GUI 标志,但它对 Windows 没有影响。

所以我想知道更多:具有GUI的内核的内核标志,但它不是Windows内核?

尽管它似乎没有实际用途,但任何人都可以解释一下吗?

我还尝试从 WinDbg 获取更多信息.hh !gflag,但它甚至没有声明这在 Windows 上不起作用。

4

1 回答 1

2

Kernel flag表示flag立即生效without requiring a reboot

Registry flag requires a reboot使标志生效

内核没有任何可能挂起的 gui。

术语 windows 并不意味着内核,而是正在运行的应用程序的 gui 窗口

检查您的操作系统中的 NtSetSystemInformation 以了解为什么 0x8 不生效

基本上这个 api 里面有一些硬编码的幻数,它测试 GlobalFlag 更改的每个请求,并在 xp-sp3 中允许或禁止它们这个幻值是0B2319BF0所以任何小于 0x10 的标志都将被禁止并在挂起 gui 上停止是 0x8 所以它无效,您不能从注册表选项卡中设置它

所以实际上没有办法设置这个标志

nt!NtSetSystemInformation+0x193:
80606009 8b03            mov     eax,dword ptr [ebx]  ds:0023:001285f8=00000008  <---- +shg
8060600b 25f09b31b2      and     eax,0B2319BF0h  < magic value in nt 
80606010 8945a0          mov     dword ptr [ebp-60h],eax ss:0010:fb569cf0=00000000
80606013 8b0d6c125580    mov     ecx,dword ptr [nt!NtGlobalFlag (8055126c)] ds:0023:8055126c=00000000
80606019 81e10f64ce4d    and     ecx,4DCE640Fh  <--another magic value  both these magic values orred together 
will be 0xffffffff covers the whole range of flags 
8060601f 0bc1            or      eax,ecx
80606021 8945a0          mov     dword ptr [ebp-60h],eax ss:0010:fb569cf0=00000000
80606024 a36c125580      mov     dword ptr [nt!NtGlobalFlag (8055126c)],eax ds:0023:8055126c=00000000 
于 2014-05-22T20:24:24.883 回答