DD_GETDRIVERINFO2DATA 結構 (d3dhal.h)
僅限 DirectX 8.0 和更新版本。
DD_GETDRIVERINFO2DATA會在 DdGetDriverInfo 呼叫中的 guidInfo DD_GETDRIVERINFODATA 成員中指定 GUID_GetDriverInfo2 的 guidInfo 成員時,在 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 值。 驅動程式應該只讀取 (不寫入此成員) 。
ReplTest1 | 意義 |
---|---|
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 要求時,不會使用DD_GETDRIVERINFODATA結構的 dwExpectedSize 成員。 在此案例中,其值是未定義的,因此應該予以忽略。 相反地,在 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) |