DD_GETDRIVERINFO2DATA 構造体 (d3dhal.h)

DirectX 8.0 以降のバージョンのみ。

DD_GETDRIVERINFO2DATAは、DdGetDriverInfo 呼び出しで DD_GETDRIVERINFODATAguidInfo メンバーにGUID_GetDriverInfo2が指定されている場合、DD_GETDRIVERINFODATA 構造体の lpvData メンバーで渡されます。

構文

typedef struct _DD_GETDRIVERINFO2DATA {
  DWORD dwReserved;
  DWORD dwMagic;
  DWORD dwType;
  DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;

メンバー

dwReserved

予約済みフィールドを指定します。 ドライバーは読み取りまたは書き込みできません。

dwMagic

マジック番号を指定します。 GetDriverInfo2 呼び出しの場合は、値がD3DGDI2_MAGIC。 それ以外の場合、この構造体は実際には DD_STEREOMODE 呼び出しです。

dwType

次のD3DGDI2_TYPE_Xxx 値のいずれかを含めることができる、要求される情報の種類を指定します 。 ドライバーは、このメンバーのみを読み取る (書き込まない) 必要があります。

Value 意味
D3DGDI2_TYPE_DEFER_AGP_FREES NT ベースのオペレーティング システムのみ。
サーフェスの AGP メモリ の破棄を適切に処理する必要があることをドライバーに通知するために使用されます。 ランタイムは、 DD_GETDRIVERINFODATA データ構造の lpvData フィールド内のDD_FREE_DEFERRED_AGP_DATA構造体へのポインターを提供します。
ドライバーは、表示モードの変更が発生する前に、この通知を受け取ることがあります。 ランタイムは、表示モードの変更を実行するために使用する場合にのみ、この通知を送信します。 ドライバーは、サーフェスを作成したプロセスに対してサーフェスを破棄するプロセスのプロセス識別子 (PID) をチェックする必要があります。 PID が異なる場合、アプリケーションがまだメモリを使用している可能性があるため、ドライバーは AGP メモリのユーザー モード マッピングを破棄しないようにする必要があります。
D3DGDI2_TYPE_DEFERRED_AGP_AWARE NT ベースのオペレーティング システムのみ。
ランタイムが適切なタイミング (たとえば、最後に未処理の AGP メモリ ロックが解放された後など) にD3DGDI2_TYPE_FREE_DEFERRED_AGPおよびD3DGDI2_TYPE_DEFER_AGP_FREES通知を送信することをドライバーに通知するために使用されます。 ランタイムは、 DD_GETDRIVERINFODATA データ構造の lpvData フィールド内のDD_DEFERRED_AGP_AWARE_DATA構造体へのポインターを提供します。
D3DGDI2_TYPE_DXVERSION アプリケーションで使用されている現在の DX ランタイム バージョンをドライバーに通知するために使用されます。 ランタイムは、 DD_GETDRIVERINFODATA データ構造の lpvData フィールド内のDD_DXVERSION構造体へのポインターを提供します。
D3DGDI2_TYPE_FREE_DEFERRED_AGP NT ベースのオペレーティング システムのみ。
AGP メモリのすべてのユーザー モード マッピングを破棄しても安全であることをドライバーに通知するために使用されます。 ドライバーは、サーフェスが破棄され、D3DGDI2_TYPE_DEFER_AGP_FREES通知を受け取ったときに、これらのユーザー モード マッピングを保持しました。 ランタイムは、 DD_GETDRIVERINFODATA データ構造の lpvData フィールド内のDD_FREE_DEFERRED_AGP_DATA構造体へのポインターを提供します。
ドライバーは、プロセス内のすべてのディスプレイ デバイスが、表示モードの変更時にロックされたサーフェス、テクスチャ、頂点バッファー、およびインデックス バッファーの使用を停止すると、この通知を受け取ります。
D3DGDI2_TYPE_GETADAPTERGROUP DirectX 9.0 以降のバージョンのみ。
複数ヘッド ビデオ カードの一部であるアダプターのグループの ID をドライバーに照会するために使用されます。 このグループは、ビデオ メモリや 3D アクセラレータなどのビデオ ハードウェアを共有します。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指すデータ構造を DD_GETADAPTERGROUPDATAに設定する必要があります。
D3DGDI2_TYPE_GETD3DCAPS8 この型は、ランタイムがデバイスの DirectX 8.0 スタイル機能を提供するD3DCAPS8構造体の受信を要求することを示します。 ドライバーは、初期化されたD3DCAPS8構造体をDD_GETDRIVERINFODATA構造体の lpvData フィールドにコピーする必要があります。
D3DGDI2_TYPE_GETD3DCAPS9 DirectX 9.0 以降のバージョンでのみ必要です。
この型は、ランタイムがデバイスの DirectX 9.0 スタイル機能を提供するD3DCAPS9構造体の受信を要求することを示します。 ドライバーは、初期化されたD3DCAPS9構造体をDD_GETDRIVERINFODATA構造体の lpvData フィールドにコピーする必要があります。
D3DGDI2_TYPE_GETD3DQUERY DirectX 9.0 以降のバージョンのみ。
ドライバーでサポートされている特定のクエリの種類に関する情報を照会するために使用されます。 ドライバーは、DD_GETDRIVERINFODATAデータ構造のlpvData フィールドが指すデータ構造を DD_GETD3DQUERYDATAに設定する必要があります。
D3DGDI2_TYPE_GETD3DQUERYCOUNT DirectX 9.0 以降のバージョンのみ。
ドライバーでサポートされているクエリの種類の数を照会するために使用されます。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指すデータ構造を DD_GETD3DQUERYCOUNTDATAに設定する必要があります。
D3DGDI2_TYPE_GETDDIVERSION DirectX 9.0 以降のバージョンのみ。
ドライバーがサポートする DDI のバージョンをドライバーに照会するために使用されます。この DDI バージョンは、この要求を行う DirectX のバージョンによって異なります。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指す DD_GETDDIVERSIONDATA 構造体の dwDDIVersion メンバーを適切な DDI バージョンに設定する必要があります。
D3DGDI2_TYPE_GETEXTENDEDMODE DirectX 9.0 以降のバージョンのみ。
ドライバーでサポートされている特定の拡張表示モードに関する情報を照会するために使用されます。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指すデータ構造を DD_GETEXTENDEDMODEDATAに設定する必要があります。
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT DirectX 9.0 以降のバージョンのみ。
ドライバーがサポートする拡張表示モードの数を照会するために使用されます。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指すデータ構造を DD_GETEXTENDEDMODECOUNTDATAに設定する必要があります。
D3DGDI2_TYPE_GETFORMAT ドライバーから特定のサーフェス形式のクエリを実行するために使用されます。 DD_GETDRIVERINFODATA データ構造の lpvData フィールドが指すデータ構造は 、 DD_GETFORMATDATA
D3DGDI2_TYPE_GETFORMATCOUNT ドライバーでサポートされている DirectX 8.0 以降のスタイルサーフェス形式の数を要求するために使用されます。 DD_GETDRIVERINFODATAのlpvData フィールドが指すデータ構造が DD_GETFORMATCOUNTDATA
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS DirectX 9.0 以降のバージョンのみ。
ドライバーで、サポートされている特定のレンダー ターゲット形式の複数サンプル品質レベルの数を照会するために使用されます。 ディスプレイ デバイスがマスク可能またはサブマスク可能なマルチサンプリングをサポートしているかどうかに関係なく、デバイスのドライバーは、D3DMULTISAMPLE_NONMASKABLEの複数サンプルの種類の品質レベルの数を提供する必要があります。 ドライバーは、DD_GETDRIVERINFODATAデータ構造の lpvData フィールドが指すデータ構造を DD_MULTISAMPLEQUALITYLEVELSDATAに設定する必要があります。

dwExpectedSize

要求された情報の予想されるサイズをバイト単位で指定します。 ドライバーは、このメンバーのみを読み取る (書き込まない) 必要があります。

注釈

GetDriverInfo2 要求が行われているときは、DD_GETDRIVERINFODATA構造体の dwExpectedSize メンバーは使用されません。 この場合、その値は未定義であり、無視する必要があります。 代わりに、データの実際の予想されるサイズは、DD_GETDRIVERINFO2DATAの dwExpectedSize メンバーにあります。

次のコード フラグメントは、 GetDriverInfo2 を処理する方法を示しています。

D3DCAPS8 myD3DCaps8 = { ... };

DWORD CALLBACK
DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA lpData)
{
  if (MATCH_GUID((lpData->guidInfo), GUID_GetDriverInfo2))
  {
    ASSERT(NULL != lpData);
    ASSERT(NULL != lpData->lpvData);

    // Is this a call to GetDriverInfo2 or DDStereoMode?
 if (((DD_GETDRIVERINFO2DATA*)(lpData->lpvData))->dwMagic
      == D3DGDI2_MAGIC)
 {
      // Yes, it's a call to GetDriverInfo2, fetch the
 // DD_GETDRIVERINFO2DATA data structure.
      DD_GETDRIVERINFO2DATA* pgdi2 = lpData->lpvData;
 ASSERT(NULL != pgdi2);
      // What type of request is this?
      switch (pgdi2->dwType)
      {
        case D3DGDI2_TYPE_GETD3DCAPS8:
        {
          // The runtime is requesting the DX8 D3D caps
          // so copy them over now. It should be noted
          // that the dwExpectedSize field of
          // DD_GETDRIVERINFODATA is not used for
          // GetDriverInfo2 calls and should be ignored.
          size_t copySize = min(
            sizeof(myD3DCaps8), pgdi2->dwExpectedSize);
          memcpy(lpData->lpvData, &myD3DCaps8, copySize);
          lpData->dwActualSize = copySize;
          lpData->ddRVal       = DD_OK;
          return DDHAL_DRIVER_HANDLED;
        }
        default:
          // For any other GetDriverInfo2 types not handled
          // or understood by the driver set a ddRVal of
          // DDERR_CURRENTLYNOTAVAIL and return
          // DDHAL_DRIVER_HANDLED.
          return DDHAL_DRIVER_HANDLED;
      }
    }
    else
    {
      // It must be a call to request for stereo mode support.
 // Fetch the stereo mode data
      DD_STEREOMODE* pStereoMode = lpData->lpvData;
 ASSERT(NULL != pStereoMode);

      // Process the stereo mode request...
      lpData->dwActualSize = sizeof(DD_STEREOMODE);
      lpData->ddRVal       = DD_OK;
      return DDHAL_DRIVER_HANDLED;
    }
  }

  // Handle any other device GUIDs...

} // DdGetDriverInfo

D3DCAPS8とD3DCAPS9の詳細については、DirectX SDK のドキュメントを参照してください。

要件

要件
Header d3dhal.h (D3dhal.h を含む)

こちらもご覧ください

DD_DEFERRED_AGP_AWARE_DATA

DD_DXVERSION

DD_FREE_DEFERRED_AGP_DATA

DD_GETADAPTERGROUPDATA

DD_GETD3DQUERYCOUNTDATA

DD_GETD3DQUERYDATA

DD_GETDDIVERSIONDATA

DD_GETDRIVERINFODATA

DD_GETEXTENDEDMODECOUNTDATA

DD_GETEXTENDEDMODEDATA

DD_GETFORMATCOUNTDATA

DD_GETFORMATDATA

DD_MULTISAMPLEQUALITYLEVELSDATA

DD_STEREOMODE

DdGetDriverInfo