D3DDDI_ESCAPEFLAGS結構 (d3dukmdt.h)
D3DDDI_ESCAPEFLAGS 結構會識別使用者模式顯示驅動程式 (UMD) (或用戶端驅動程式) 如何與內核模式顯示迷你埠驅動程式 (KMD) 共用資訊。
語法
typedef struct _D3DDDI_ESCAPEFLAGS {
union {
struct {
UINT HardwareAccess : 1;
UINT DeviceStatusQuery : 1;
UINT ChangeFrameLatency : 1;
UINT NoAdapterSynchronization : 1;
#if ...
UINT Reserved : 1;
UINT VirtualMachineData : 1;
UINT DriverKnownEscape : 1;
UINT DriverCommonEscape : 1;
#if ...
UINT Reserved2 : 24;
#else
UINT Reserved2 : 26;
#endif
#elif
UINT Reserved : 28;
#elif
UINT Reserved : 29;
#else
UINT Reserved : 31;
#endif
};
UINT Value;
};
} D3DDDI_ESCAPEFLAGS;
成員
HardwareAccess
UINT 值,指定 OS 是否會針對 DxgkDdiEscape 呼叫,執行 第二層同步處理。 如果驅動程式需要第二層同步處理,且未設定 HardwareAccess 旗標,則驅動程式 DxgkDdiEscape 函式的呼叫應該會失敗。
從 Windows 8.1 開始,如果已設定此成員,DeviceStatusQuery 且 ChangeFrameLatency 必須設定為零。
DeviceStatusQuery
如果設定,則呼叫 pfnEscapeCb函式,且 D3DDDICB_ESCAPE。PrivateDriverDataSize 成員為 sizeof(D3DDDI_EXECUTIONSTATEESCAPE)
,Direct3D 執行時間會解譯 D3DDDICB_ESCAPE。pPrivateDriverData 成員作為包含 D3DDDI_EXECUTIONSTATEESCAPE 結構的緩衝區指標。 此外,運行時間會將要求的資訊寫入提供的緩衝區,而不是將 DxgkDdiEscape 呼叫至 KMD,以處理 pfnEscapeCb 作為狀態查詢。
如果已設定此成員,HardwareAccess 和 ChangeFrameLatency 必須設定為零。
從 Windows 8.1 開始支援。
如果作系統在 Windows 8.1 之前,或是使用者模式驅動程式是以 OpenAdapter Xxx 初始化,則作系統會忽略此成員,pOpenData->Interface 成員表示 Direct3D 版本 8 或更早版本。
ChangeFrameLatency
如果設定,當呼叫 pfnEscapeCb函式時,D3DDDICB_ESCAPE。PrivateDriverDataSize 成員 sizeof(D3DDDI_FRAMELATENCYESCAPE)
,而且也會符合備註中的條件,Direct3D 運行時間會解譯 D3DDDICB_ESCAPE。pPrivateDriverData 成員做為包含 D3DDDI_FRAMELATENCYESCAPE 結構的緩衝區指標。 此外,運行時間會處理 pfnEscapeCb 作為變更 DirectX 圖形核心子系統最大畫面延遲的要求,方法是將要求的資訊寫入提供的緩衝區,而不是將 DxgkDdiEscape 呼叫傳送至 KMD。
如果已設定此成員,HardwareAccess 和 DeviceStatusQuery 必須設定為零。
從 Windows 8.1 開始支援。
如果作系統在 Windows 8.1 之前,或是使用者模式驅動程式是以 OpenAdapter Xxx 初始化,則作系統會忽略此成員,pOpenData->Interface 成員表示 Direct3D 版本 8 或更早版本。
NoAdapterSynchronization
Reserved
這個成員是保留的,而且應該設定為零。
VirtualMachineData
表示從虛擬機呼叫 DxgkDdiEscape。 無法從使用者模式設定此旗標。 從 WDDM 2.2 開始支援。
DriverKnownEscape
驅動程式私人數據會指向已知的結構。
DriverCommonEscape
私人數據會指向 D3D 執行時間定義的結構。
Reserved2
這個成員是保留的,而且應該設定為零。
Value
包含在D3DDDI_ESCAPEFLAGS中的成員,可以保存一個32位值,以識別如何共享資訊。
言論
如果已設定 ChangeFrameLatency,則只有在:
- KMD 負責單一廠商所提供的連結配接器組態(LDA)。
- 應用程式在其存留期某個時間點取得顯示器的獨佔全螢幕擁有權。
- 應用程式尚未覆寫預設最大畫面延遲值為 3。
如果不符合這些條件,pfnEscapeCb 呼叫會傳回E_INVALIDARG錯誤碼。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista (WDDM 1.0) |
標頭 | d3dukmdt.h (包括 D3dumddi.h, D3dkmddi.h) |