Я просто хочу знать, как получить информацию BIO в C ++. Я попробовал следующий вариант, но у каждого есть свой недостаток.
Мне нужно одно постоянное решение, которое дает мне БИО информацию на С ++.
Попытка определить, находитесь ли вы в виртуальной ОС, выполняется различными способами и зависит от используемого программного обеспечения для виртуализации.
Есть много разных вопросов по этому поводу на stackoverflow.
В определенном порядке, вот некоторые статьи, они охватывают различные используемые части виртуализации:
Обнаружить виртуальную ОС из приложения?
определить, работает ли приложение на виртуальной коробке
64-битное обнаружение Windows VMware
Как определить, что вы работаете под виртуальной машиной?
http://www.codeproject.com/Articles/9823/Detect-if-your-program-is-running-inside-a-Virtual
Пока Salgar побеждает меня, один из более «безопасных» методов заключается в использовании инструкции CPUID, которая обычно работает на современных виртуальных машинах. Я знаю, что KVM, Microsoft и Xen используют лист CPUID около 0x40000000, который возвращает «Вы находитесь на виртуальной машине». Не уверен на 100%, если VMWare также поддерживает тот же — на «реальной» машине они зарезервированы и не используются.
Вот страница, которая обсуждает несколько опций помимо CPUID:
http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/detecting-x86-virtual-machines.html
и есть несколько ссылок для дальнейшего чтения.