GFlags Stop на зависшем GUI
Сегодня мне было интересно, почему опция GFlags " Остановить при зависшем графическом интерфейсе" появляется на вкладке " Флаги ядра " пользовательского интерфейса GFlags. Есть ли у ядра графический интерфейс, который может зависнуть?
Поэтому я попытался получить информацию от Microsoft, но MSDN просто говорит:
Флаг "Остановить при зависании" отображается в GFlags, но не влияет на Windows.
Так что мне интересно еще больше: флаг ядра для ядра с графическим интерфейсом, но это не ядро Windows?
Хотя это, кажется, не имеет практического применения, кто-нибудь может объяснить это?
Я также пытался получить больше информации от WinDbg .hh !gflag
, но это даже не дает утверждения, что это не будет работать на Windows.
1 ответ
Kernel flag
указывает, что флаг вступает в силу немедленно without requiring a reboot
Registry flag requires a reboot
чтобы флаги вступили в силу
ядро не имеет графического интерфейса, который мог бы зависнуть.
термин windows означает не ядро, а графические окна запущенного приложения
проверьте NtSetSystemInformation в вашей ОС, чтобы понять, почему 0x8 не вступает в силу
в основном в этом API есть несколько закодированных магических чисел, которые проверяют каждый запрос на изменения GlobalFlag и разрешают или запрещают их в xp-sp3, это магическое значение 0B2319BF0
поэтому любой флаг < 0x10 будет запрещен и остановлен на зависшем графическом интерфейсе 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