#menu(MenuPG)
**[[DirectX診断ツール(DxDiag.exe)>Program/DirectX]] [#zb2c3727]
-DirectX診断ツール(DxDiag.exe)はDirectXをインストールしていると使用可能なDirectX環境確認ツールです。&br;
このツールは「スタート→ファイル名を指定して実行→「dxdiag」と入力→実行」で起動します。&br;
いろいろな情報が表示されますが、情報がありすぎてわかりにくい状態です。

-そこで、DirectX9 Toolのプログラムの中でも使用していますが、このDirectX診断ツールで取得可能な情報をプログラムから使用可能にするためのAPIを利用して簡略したバージョンを作成してみました。

**[[PcInfo Program>Program/DirectX]] [#r11f56bc]
-インクルードするヘッダー等
 #include <dxdiag.h>    // dxdiagn.dll用ヘッダー
 #include <windows.h>	// Windows標準ヘッダー
 #include <stdio.h>	// 標準入出力ヘッダー
 #include <objbase.h>	// COM+インターフェイス
 private:
  #define AllowWHQLChecks		false;
  #define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
  #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
  #define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
 protected:
  IDxDiagProvider*  m_pDxDiagProvider;
  IDxDiagContainer* m_pDxDiagRoot;

***初期化 [#f7aa5c76]
-DxDiagへはCOMインターフェイスを利用してアクセスする必要があるので
開始時に「CoInitialize(NULL)」を実行します 
-DxDiagのCOMインターフェイスは「IID_IDxDiagProvider」です。
#htmlinsert(dxdiaginit.htm)

***取得方法の見本 [#xedb8b59]
-結果が「VARIANT型」で返されるので「GetStringValue」等の関数にまとめました。&br;
ObjectからGetPropして得られる「VARIANT型」を判定に使用しています。

#htmlinsert(dxdiagsysinfo.htm)

***取得結果の見本 [#g27d6eaa]
 -------------------- PC Info --------------------
 [  O S  ] WindowsXP Professional Service Pack 2
 [  CPU  ] Intel(R) Pentium(R) M processor 1400MHz
 [ Maker ] NEC                             
 [ Model ] PC-LM5007D                      
 [ Memory] 766MB RAM
 [DirectX] DirectX9.0c
 [  VGA  ] MOBILITY RADEON 9000 AGP (0x4C66)
 [ V-RAM ] 32.0 MB
 [ Driver] 6.14.0010.6360
 [  DDI  ] 9 (or higher)
 [Direct3D] 有効
 [AGP Acceleration] 有効
 [ Sound ] Intel(r) Integrated Audio
 [ Driver] 5.10.0000.3552
 [Acceleration Level] フル
-「DDI」は使用しているグラフィックカードのドライババージョンがどのDirectXに対応しているかを示しています。&br;
この項目が動作環境のDirectXバージョンよりも低い場合は不具合が起こる可能性があります。
-「Direct3D」を実行する際にグラフィックカードの支援が有効か示します。&br;
無効の場合エミュレーション動作になるため非常に重くなります。
-「AGP Acceleration」AGP テクスチャー支援が有効か示します。&br;
無効の場合、動作が重くなる場合があります。
-「Acceleration Level」サウンドのハードウェア支援状態を示します。&br;
「無効」「基本」「標準」「フル」があり、サウンドの調子がおかしい場合は、DirectX診断ツールで無効などにすることで、動作がエミュレーションよりになって回避できる場合があります。

***[[Microsoft(R) System Check Tool for PC Games>http://www.microsoft.com/downloads/details.aspx?FamilyId=AB643AF1-EEF7-41AF-908B-1FD9647396EE&displaylang=ja]] [#z1fba2b0]
-DirectX診断ツール以外にも、マイクロソフト社がPCゲーム用に&br;
[[マイクロソフト システム チェック ツール for PC ゲーム>http://www.microsoft.com/downloads/details.aspx?FamilyId=AB643AF1-EEF7-41AF-908B-1FD9647396EE&displaylang=ja]]&br;
というのを提供しています。