共用方式為


DD_GETDRIVERINFO2DATA結構 (d3dhal.h)

僅限 DirectX 8.0 和更新版本。

當GUID_GetDriverInfo2在 DdGetDriverInfo 呼叫中指定 guidInfo DD_GETDRIVERINFODATA 成員時,DD_GETDRIVERINFO2DATA會傳入 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 值。 驅動程式應該只讀取(而非寫入)這個成員。

意義
D3DGDI2_TYPE_DEFER_AGP_FREES NT 型作系統。
用來通知驅動程式,它應該正確地處理表面 AGP 記憶體 的解構。 運行時間會提供DD_GETDRIVERINFODATA數據結構 lpvData 欄位中 DD_FREE_DEFERRED_AGP_DATA 結構的指標。
驅動程式有時會在顯示模式變更之前收到此通知。 運行時間只有在用來執行顯示模式變更時,才會傳送此通知。 驅動程式應該檢查進程標識碼(PID),以針對建立介面的進程終結介面。 如果 PID 不同,驅動程式可能不應該終結 AGP 記憶體的使用者模式對應,因為應用程式可能仍在使用記憶體。
D3DGDI2_TYPE_DEFERRED_AGP_AWARE NT 型作系統。
用來通知驅動程式運行時間在適當時間傳送D3DGDI2_TYPE_FREE_DEFERRED_AGP和D3DGDI2_TYPE_DEFER_AGP_FREES通知(例如,釋放最後一個未處理的 AGP 記憶體 鎖定之後)。 運行時間會提供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 和更新版本。
用來查詢驅動程式,以取得屬於其多頭視訊卡一部分之適配卡群組的身分識別。 此群組會共享視訊硬體,例如視訊記憶體和 3D 加速器。 驅動程式應將DD_GETDRIVERINFODATA資料結構的 lpvData 字位所指向的數據結構設定為 DD_GETADAPTERGROUPDATA
D3DGDI2_TYPE_GETD3DCAPS8 此類型表示運行時間要求接收D3DCAPS8結構,並提供裝置的 DirectX 8.0 樣式功能。 驅動程式應該將初始化的 D3DCAPS8 結構複製到 DD_GETDRIVERINFODATA 結構的 lpvData 字段。
D3DGDI2_TYPE_GETD3DCAPS9 僅限 DirectX 9.0 和更新版本的必要專案。
此類型表示運行時間要求接收D3DCAPS9結構,並提供裝置的 DirectX 9.0 樣式功能。 驅動程式應該將初始化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_GETDDIVERSIONDATA 結構的 dwDDIVersion 成員設定為適當的 DDI 版本,DD_GETDRIVERINFODATA數據結構所指向的 lpvData 字段。
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數據結構的 lpvDatafield 所指向的數據結構 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 要求時,不會使用 dwExpectedS ize DD_GETDRIVERINFODATA 結構的成員。 在此案例中,其值未定義,因此應該忽略。 相反地,dwExpectedSize 成員中找到實際預期的數據大小DD_GETDRIVERINFO2DATA。

下列代碼段示範如何處理 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 檔。

要求

要求 價值
標頭 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