共用方式為


D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 結構 (d3dukmdt.h)

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 結構會識別同步處理物件的屬性。

語法

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
  union {
    struct {
      UINT Shared : 1;
      UINT NtSecuritySharing : 1;
      UINT CrossAdapter : 1;
      UINT TopOfPipeline : 1;
      UINT NoSignal : 1;
      UINT NoWait : 1;
      UINT NoSignalMaxValueOnTdr : 1;
      UINT NoGPUAccess : 1;
      UINT SignalByKmd : 1;
      UINT Unused : 1;
      UINT UnwaitCpuWaitersOnlyOnDestroy : 1;
#if ...
      UINT Reserved : 20;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#elif
      UINT Reserved : 23;
#elif
      UINT Reserved : 28;
#else
      UINT Reserved : 29;
#endif
      UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
    };
    UINT Value;
  };
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;

成員

Shared

指定同步處理物件是否共用的 UINT 值。

如果 Shared 設定為 1 (TRUE) ,則會共用同步處理物件。 如果 Shared 設定為零 (FALSE) ,則不會共用同步處理物件。 如需詳細資訊,請參閱<備註>一節。

NtSecuritySharing

UINT 值,指定同步處理物件是否與 NT 句柄共用,這表示它沒有資源的全域 D3DKMT_HANDLE 核心模式句柄。

如果 NtSecuritySharing 設定為 1 (TRUE) ,同步處理物件會共用,但沒有資源的全域 D3DKMT_HANDLE 句柄。

注意

如果 NtSecuritySharing 設定為 1, 則 Shared 必須設定為 1。 如需詳細資訊,請參閱<備註>一節。

從 Windows 8 開始支援。

CrossAdapter

UINT 值,指定同步處理物件是否為混合式系統上的共用 交叉配接器資源物件

如果 CrossAdapter 設定為 1 (TRUE) ,則同步處理對象是共用的交叉配接器物件。 如果 CrossAdapter 設定為零 (FALSE) ,同步處理物件不是共用的交叉配接器物件。

TopOfPipeline

意義
TRUE 指定同步處理物件是否在命令緩衝區的內容完全複製到 GPU 管線,但不一定完成執行時發出訊號。 此行為允許儘快重複使用命令緩衝區。
false 同步處理物件會在上述命令緩衝區完成執行之後發出訊號。

此值只能設定為 1 (TRUE) 監視的隔離同步處理物件,而且它應該設定為所有其他同步處理物件類型的 FALSE) 為零 (FALSE。

從Windows 10 開始支援。

NoSignal

意義
TRUE 指定建立或開啟此同步對象的裝置只能提交等候命令。 當設定此旗標時,嘗試提交訊號作業將會傳回STATUS_ACCESS_DENIED。
false 同步處理物件可以發出訊號。

此值只能設定為 1 (TRUE) 監視的隔離同步處理物件,而且它應該設定為所有其他同步處理物件類型的 FALSE) 為零 (FALSE。

從Windows 10 開始支援。

NoWait

意義
TRUE 指定建立或開啟此同步對象的裝置只能提交訊號命令。 當設定此旗標時,嘗試提交等候作業將會傳回STATUS_ACCESS_DENIED。
false 同步處理物件可以等候。

此值只能設定為 1 (TRUE) 監視的隔離同步處理物件,而且它應該設定為所有其他同步處理物件類型的 FALSE) 為零 (FALSE。

無法使用 NoSignal 旗標同時設定此旗標。

從Windows 10 開始支援。

NoSignalMaxValueOnTdr

意義
TRUE 指示 GPU 排程器略過上述受監視柵欄的訊號,以在 TDR 案例中達到最大值。
false 當裝置可能會受到 GPU 重設影響的裝置 (TDR) 時,GPU 排程器會將受監視的柵欄發出訊號給最大值。

從Windows 10 開始支援。

NoGPUAccess

設定時,無論適配卡上限為何,柵欄都不會對應到 GPU 虛擬位址空間,而且一律會儲存為 64 位值 (。不論適配卡上限為何) 。 僅支援封包型訊號/等候作業。 從Windows 10 開始支援。

SignalByKmd

設定時,核心模式驅動程式 (KMD) 可以發出柵欄訊號。 此旗標只能與 D3DDDI_CPU_NOTIFICATION 物件搭配使用。 從 Windows 11 (WDDM 3.0) 開始支援。

Unused

此成員未使用,且應設定為零。 從 Windows 11 版本 22H2 (WDDM 3.1) 開始提供。

UnwaitCpuWaitersOnlyOnDestroy

設定時,只有在最後終結共用同步處理物件時,CPU 上的共用同步處理物件的等候程式才會解除封鎖。 根據預設,當本機同步對象終結時,CPU 等候程式會解除封鎖,但另一個本機同步物件仍會開啟主要共用同步物件。 從 Windows 11 版本 24H2 (WDDM 3.2) 開始支援。

Reserved

這個成員是保留的,而且應該設定為零。

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

這個成員是保留的,而且應該設定為零。

從 Windows 8 開始支援。

Value

包含在 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 的等位成員,可保存一個識別同步處理物件屬性的32位值。

備註

必須先使用 D3DKMTShareObjects 函式來建立物件,並設定 NtSecuritySharing 旗標值。 此旗標值可在 D3DKMT_CREATEALLOCATIONFLAGSD3DKMT_CREATEKEYEDMUTEX2_FLAGSD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 結構中使用。

驅動程式應遵循 下列D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 旗標指導方針:

  • 如果未共用同步處理物件,請將 SharedNtSecuritySharing 設定為 0。

  • 如果同步處理物件與 D3DKMT_HANDLE 數據類型共用,請設定 Shared = 1 和 NtSecuritySharing = 0。

  • 如果同步處理對象與進程 (的 NT 句柄共用,而且沒有全域 D3DKMT_HANDLE 核心模式句柄給資源) ,請將 Shared = 1 和 NtSecuritySharing = 1。

規格需求

需求
最低支援的用戶端 Windows 7
標頭 d3dukmdt.h (包括 D3dumddi.h、D3dkmddi.h)

另請參閱

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS