Цитата:
Цитата Iska
Так и должно быть?
|
Если виртуализация отключена в BIOS\UEFI, то да, если включена - скорее всего накосячил с адресом. Давайте разбираться. Код
IsProcessorFeaturePresent:
Код:
sub rsp,28h
call qword ptr [kernelbase!_imp_RtlIsProcessorFeaturePresent (00000001`801a8b10)]
nop dword ptr [rax+rax]
xor ecx,ecx
test al,al
setne cl ; установка байта по условию ne
mov eax,ecx
add rsp,28h
ret
Мысленно нарисовали себе операцию ветвления, в которой задействуется
RtlIsProcessorFeaturePresent - экспортируется
ntdll.dll:
Код:
cmp ecx,40h
jae ntdll!RtlIsProcessorFeaturePresent+0xe (00000001`80020c6e)
mov eax,ecx
mov al,byte ptr SharedUserData+0x274 (00000000`7ffe0274)[rax]
ret
xor al,al
ret
Что мы видим? Функция тупо берёт соответствующий байт из поля
ProcessorFeatures (смещение 0x274) структуры
KUSER_SHARED_DATA. Поле представлено как массив из 64-х
unsigned char. А далее вы знаете: номера фич совпадают с индексами в массиве. Короче, просто гляньте вывод:
Код:
(0..63).ForEach{'{0}: {1}' -f $_, [Runtime.InteropServices.Marshal]::ReadByte([IntPtr](0x7ffe0274 + $_))}
Цитата:
Цитата Phoenix
А я грешным делом подумал, что ТС про Hyper-V вопрошает.
|
Ну дык, мы сейчас все в телепатов обратились.
И исчо:
Код:
((gp HKLM:\HARDWARE\DESCRIPTION\System\CentralProcessor\0).FeatureSet -band 0x08000000) -eq 0x08000000