2014-05-20 1 views
-2

Сегодня мне было интересно, почему вариант GFlags Stop на подвешенный GUI появляется в Kernel Flags вкладке GFlags пользовательского интерфейса. У ядра есть GUI, который может висеть?GFlags Stop на подвешенный GUI

Так что я пытался получить некоторую информацию от Microsoft, но MSDN just says:

Стоп на подвешенный флаг GUI появляется в GFlags, но это не имеет никакого влияния на Windows.

Так что я еще больше удивился: флаг ядра для ядра с графическим интерфейсом, но это не ядро ​​Windows?

Хотя это кажется нецелесообразным, может ли кто-нибудь объяснить это?

Я также попытался получить дополнительную информацию от WinDbg .hh !gflag, но он даже не дает утверждать, что это не будет работать в Windows.

ответ

2

Kernel flag указывает флаг вступает в силу немедленно without requiring a reboot

Registry flag requires a reboot для флагов вступили в силу

ядро ​​не имеет какой-либо графический интерфейс, который может повиснуть.

термин окна не означает ядро, но графический интерфейс окна запущенного приложения

проверка NtSetSystemInformation в вашей ОС, чтобы понять, почему 0x8 не вступит в силу

в основном есть несколько жестко вписаны магические числа внутри этого API который проверяет каждый запрос для изменений GlobalFlag и разрешает их или запрещает их в xp-sp3, это волшебное значение 0B2319BF0, поэтому любой флаг < 0x10 будет запрещен , а остановка на вешенном gui равна 0x8, так что это не эффективно, и вы не можете установить этот из раздела реестра

01 не

настолько эффективно, нет способа установки этого флага

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