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 
Другие вопросы по тегам