Presentation is loading. Please wait.

Presentation is loading. Please wait.

WPF で作る!! 仮想化支援技術確認ツール CLR/H ひよひよ Crystal Dew World

Similar presentations


Presentation on theme: "WPF で作る!! 仮想化支援技術確認ツール CLR/H ひよひよ Crystal Dew World"— Presentation transcript:

1 WPF で作る!! 仮想化支援技術確認ツール CLR/H ひよひよ Crystal Dew World

2 Virtual Windows XP とは? Windows XP SP3 + 仮想PC環境 実機 仮想PC 同じアプリでも得られる
情報に違いが…… 仮想PCにインストールしたアプリを直接起動可能!! 実機 仮想PC

3 Virtual Windows XP が動かない!?
あっ、あれ?

4 AMD-V™ または Intel® VT (BIOS で有効に設定) が搭載された、ハードウェア仮想化に対応したプロセッサーが必要です。
Virtual Windows XP の動作には… AMD-V™ または Intel® VT (BIOS で有効に設定) が搭載された、ハードウェア仮想化に対応したプロセッサーが必要です。

5 VirtualChecker の出番ですよ!!
仮想化支援機能の状態確認 OpenLibSys.org

6 Panasonic CF-Y8 (Yシリーズ最終モデル)
『無効』⇒『有効』 BIOSセットアップ画面から 仮想化支援機能を有効にします。 ※設定変更後は一度電源を切りましょう。 Panasonic CF-Y8 (Yシリーズ最終モデル)

7 作ってみたいと思いませんか? 自分でも作ってみたいと思いませんか? WPFで!!

8 必要な機能は3つだけ!! Intel VT/AMD-V に対応しているか判定 Intel VT/AMD-V が有効か判定 結果を表示
CPUID命令を使用して判定 でもどうやって? RDMSR命令を使用して判定 でもどうやって? WPFで表示

9 WinRing0 汎用ハードウェアアクセスライブラリ http://openlibsys.org/ 修正 BSD ライセンス 主な機能
I/O ポートの読み書き PCI コンフィギュレーション空間の読み書き RDMSR/WRMSR などの特権命令発行 RDTSC や CPUID などの一般命令発行 ⇒ .NET Framework では実現できない CPUID命令やRDMSR命令の発行を代行

10 WinRing0.dll (WinRing0x64.dll)
VirtualChecker WPF の構成 WinRing0.dll (WinRing0x64.dll) ユーザーモード:Ring3 カーネルモード:Ring0 WinRing0.sys WinRing0x64.sys

11 1. Intel VT/AMD-V 対応? Intel VT の場合 private bool IsIntelVtSupported()
{ // Feature Flag ECX の bit5 が 1 なら Intel VT 対応 uint eax = 0, ebx = 0, ecx = 0, edx = 0; if (ols.CpuidPx(0x1, ref eax, ref ebx, ref ecx, ref edx, (UIntPtr)1) != && (ecx & (1 << 5)) != 0) { return true; } else return false; AMD-V の場合 省略

12 2. Intel VT/AMD-V 有効? Intel VT の場合 private bool IsIntelVtEnabled()
{ // Feature Control MSR EAX の bit1/bit2 が 1 なら Intel VT 有効 uint eax = 0, edx = 0; if (ols.RdmsrPx(0x3A, ref eax, ref edx, (UIntPtr)1) != 0 && ((eax & (1 << 1)) != 0 || (eax & (1 << 2)) != 0)) { return true; } else return false; AMD-V の場合 省略

13 完成!? 3. 結果の表示 if (IsIntelVtSupported()) { if (IsIntelVtEnabled())
str = "Intel VT 有効"; } else str = "Intel VT 無効"; else if (IsAmdvSupported()) { if (IsAmdvEnabled()) str = "AMD-V 有効"; } else str = "AMD-V 無効"; str = "Intel VT/AMD-V 未対応"; label1.Content = str; 完成!?

14 まとめ XP Mode が使えるかどうかわからない!! というお悩みもこれで解決です。 XAML
<Window x:Class="VirtualCheckerWpf.MainWindow" xmlns=" xmlns:x=" Title="VirtualChecker WPF" Height="110" Width="600" ResizeMode="NoResize"> <Grid FlowDirection="LeftToRight"> <Label Name="label1" FontSize="48" Height="70" Width="578" HorizontalContentAlignment="Center" /> </Grid> </Window> XP Mode が使えるかどうかわからない!! というお悩みもこれで解決です。


Download ppt "WPF で作る!! 仮想化支援技術確認ツール CLR/H ひよひよ Crystal Dew World"

Similar presentations


Ads by Google