-3

今日、GFlags オプションStop on hang GUIがGFlags ユーザー インターフェイスのKernel Flagsタブに表示される理由を知りたいと思いました。カーネルには、ハングする可能性のある GUI がありますか?

そこで、マイクロソフトから情報を取得しようとしましたが、MSDN は次のように述べています。

Stop on hang GUI フラグが GFlags に表示されますが、Windows には影響しません。

だから私はさらに疑問に思っています.GUIを持っているカーネルのカーネルフラグですが、それはWindowsカーネルではありませんか?

実用的ではないように思えますが、これを説明できる人はいますか?

また、 WinDbg からより多くの情報を取得しようとしました.hh !gflagが、これが Windows では機能しないという声明すら出ていません。

4

1 に答える 1

2

Kernel flagフラグがすぐに有効になることを示しますwithout requiring a reboot

Registry flag requires a rebootフラグが有効になるように

カーネルには、ハングする可能性のある GUI がありません。

ウィンドウという用語はカーネルを意味するのではなく、実行中のアプリケーションの GUI ウィンドウを意味します

OS の 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 に答える