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 が 0 (FALSE) に設定されている場合、同期オブジェクトは共有されません。 詳細については、「解説」を参照してください。

NtSecuritySharing

同期オブジェクトを NT ハンドルと共有するかどうかを指定する UINT 値。つまり、リソースに対するグローバル D3DKMT_HANDLE カーネル モード ハンドルがないことを意味します。

NtSecuritySharing が 1 (TRUE) に設定されている場合、同期オブジェクトは共有されますが、リソースへのグローバル D3DKMT_HANDLE ハンドルはありません。

注意

NtSecuritySharing が 1 に設定されている場合は、Shared を 1 に設定する必要があります。 詳細については、「解説」を参照してください。

Windows 8 以降でサポートされています。

CrossAdapter

同期オブジェクトが ハイブリッド システム上の共有アダプター間リソース オブジェクトであるかどうかを示す UINT 値。

CrossAdapter が 1 (TRUE) に設定されている場合、同期オブジェクトは共有クロスアダプター オブジェクトです。 CrossAdapter が 0 (FALSE) に設定されている場合、同期オブジェクトは共有クロスアダプター オブジェクトではありません。

TopOfPipeline

意味
TRUE 同期オブジェクトの前のコマンド バッファーの内容が GPU パイプラインに完全にコピーされるとすぐに通知するかどうかを指定しますが、必ずしも実行が完了したとは限りません。 この動作により、コマンド バッファーをできるだけ早く再利用できます。
FALSE 同期オブジェクトは、上記のコマンド バッファーの実行が完了した後に通知されます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

Windows 10 以降でサポートされています。

NoSignal

意味
TRUE この同期オブジェクトが作成または開かれたデバイスで、待機コマンドのみを送信できることを指定します。 このフラグが設定されているときにシグナル操作を送信しようとすると、STATUS_ACCESS_DENIEDが返されます。
FALSE 同期オブジェクトはシグナル通知を受け取ることができます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

Windows 10 以降でサポートされています。

NoWait

意味
TRUE この同期オブジェクトが作成または開かれたデバイスが、シグナル コマンドのみを送信できることを指定します。 このフラグが設定されているときに待機操作を送信しようとすると、STATUS_ACCESS_DENIEDが返されます。
FALSE 同期オブジェクトは待機できます。

この値は、監視対象のフェンス同期オブジェクトの場合は 1 (TRUE) にのみ設定でき、他のすべての同期オブジェクトの種類では 0 (FALSE) に設定する必要があります。

このフラグを NoSignal フラグと同時に設定することはできません。

Windows 10 以降でサポートされています。

NoSignalMaxValueOnTdr

意味
TRUE TDR の場合、監視対象フェンスの前述のシグナリングを最大値にバイパスするように GPU スケジューラに指示します。
FALSE GPU スケジューラは、GPU リセット (TDR) の影響を受ける可能性があるデバイスが通知する可能性がある場合に、監視対象のフェンスに最大値を通知します。

Windows 10 以降でサポートされています。

NoGPUAccess

設定すると、フェンスは GPU 仮想アドレス空間にマップされず、(アダプターキャップに関係なく) 常に 64 ビット値として格納されます。 パケットベースのシグナル/待機操作のみがサポートされます。 Windows 10 以降でサポートされています。

SignalByKmd

設定すると、カーネル モード ドライバー (KMD) によってフェンスを通知できます。 このフラグは、 D3DDDI_CPU_NOTIFICATION オブジェクトでのみ使用できます。 Windows 11 (WDDM 3.0) 以降でサポートされています。

Unused

このメンバーは使用されておらず、0 に設定する必要があります。 Windows 11 バージョン 22H2 (WDDM 3.1) 以降で使用できます。

UnwaitCpuWaitersOnlyOnDestroy

設定すると、CPU 上の共有同期オブジェクトのウェイターは、共有同期オブジェクトが最終的に破棄されたときにのみブロック解除されます。 既定では、ローカル同期オブジェクトが破棄されると CPU ウェイターのブロックが解除されますが、メイン共有同期オブジェクトは別のローカル同期オブジェクトによって開かれます。 Windows 11 バージョン 24H2 (WDDM 3.2) 以降でサポートされています。

Reserved

このメンバーは予約されており、0 に設定する必要があります。

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

このメンバーは予約されており、0 に設定する必要があります。

Windows 8 以降でサポートされています。

Value

同期オブジェクトの属性を識別する 1 つの 32 ビット値を保持できる 、D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS に含まれる共用体内のメンバー。

注釈

D3DKMTShareObjects 関数を使用して共有するオブジェクトは、まず NtSecuritySharing フラグ値を設定して作成する必要があります。 このフラグ値は、 D3DKMT_CREATEALLOCATIONFLAGSD3DKMT_CREATEKEYEDMUTEX2_FLAGSおよびD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 構造体で使用できます。

ドライバーは、 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS フラグに関する次のガイドラインに従う必要があります。

  • 同期オブジェクトが共有されていない場合は、 SharedNtSecuritySharing の両方を 0 に設定します。

  • 同期オブジェクトが D3DKMT_HANDLE データ型と共有されている場合は、 Shared = 1 と NtSecuritySharing = 0 を設定します。

  • 同期オブジェクトがプロセスへの NT ハンドルと共有されている場合 (およびリソースへのグローバル D3DKMT_HANDLE カーネル モード ハンドルがない場合)、 Shared = 1 と NtSecuritySharing = 1 を設定します。

要件

要件
サポートされている最小のクライアント Windows 7
Header d3dukmdt.h (D3dumddi.h、D3dkmddi.h を含む)

こちらもご覧ください

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS