次の方法で共有


D3DDDI_SYNCHRONIZATIONOBJECTINFO2構造体 (d3dukmdt.h)

D3DDDI_SYNCHRONIZATIONOBJECTINFO2 構造体には、第 2 世代同期オブジェクトに関する情報が含まれています。

構文

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
  D3DDDI_SYNCHRONIZATIONOBJECT_TYPE  Type;
  D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
  union {
    struct {
      BOOL InitialState;
    } SynchronizationMutex;
    struct {
      UINT MaxCount;
      UINT InitialCount;
    } Semaphore;
    struct {
      D3DKMT_ALIGN64 UINT64 FenceValue;
    } Fence;
    struct {
      HANDLE Event;
    } CPUNotification;
    struct {
      D3DKMT_ALIGN64 UINT64                 InitialFenceValue;
      VOID                                  *FenceValueCPUVirtualAddress;
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } MonitoredFence;
    struct {
      D3DKMT_HANDLE                         hAdapter;
      D3DDDI_VIDEO_PRESENT_TARGET_ID        VidPnTargetId;
      D3DKMT_ALIGN64 UINT64                 Time;
      VOID                                  *FenceValueCPUVirtualAddress;
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
      UINT                                  Padding;
    } PeriodicMonitoredFence;
    struct {
      D3DKMT_ALIGN64 UINT64 Reserved[8];
    } Reserved;
  };
  D3DKMT_HANDLE                      SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;

メンバーズ

Type

[in]同期オブジェクトの種類を示す D3DDDI_SYNCHRONIZATIONOBJECT_TYPE 型の値。

Flags

[in]ビット フィールド フラグで同期オブジェクトの属性を指定する D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 構造体。

SynchronizationMutex

同期ミューテックスに関する情報を含む構造体。 Type メンバーが D3DDDI_SYNCHRONIZATION_MUTEXと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の共用体は SynchronizationMutex 構造体を保持します。

SynchronizationMutex.InitialState

同期ミューテックスがオブジェクトによって最初に所有されているかどうかを示すブール値。 TRUE の値は、ミューテックスが所有されていることを示します。FALSE は、ミューテックスが所有されていないことを示します。

Semaphore

セマフォに関する情報を含む構造体。 メンバーが D3DDDI_SEMAPHOREと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の共用体は セマフォ 構造体を保持します。

Semaphore.MaxCount

オブジェクトが待機できるイベントの最大数。

Semaphore.InitialCount

オブジェクトが待機しているイベントの初期数。

Fence

フェンスに関する情報を含む構造体。 Type メンバーが D3DDDI_FENCEと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の和集合は、Fence 構造体を保持します。

Fence.FenceValue

最初のフェンス値を指定する 64 ビット値。

CPUNotification

CPU 通知に関する情報を含む構造体。 メンバーが D3DDDI_CPU_NOTIFICATIONと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の共用体は、CPUNotification 構造体を保持します。

CPUNotification.Event

CPU 通知イベントのハンドル。

MonitoredFence

監視対象のフェンスに関する情報を含む構造体。 Type メンバーが D3DDDI_MONITORED_FENCEと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の共用体は MonitoredFence 構造体を保持します。

監視対象のフェンスは、セキュリティ上の理由から NT ハンドルを使用してのみ共有できるため、監視対象のフェンスを使用する場合は、NtSecuritySharing フラグを設定する必要があります。

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

MonitoredFence.InitialFenceValue

[in]最初のフェンス値を指定する 64 ビット値。

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

MonitoredFence.FenceValueCPUVirtualAddress

[out]CPU のフェンス値の読み取り専用マッピング。 これは、監視対象のフェンス オブジェクトを作成したプロセスから読み取り可能なユーザー モード アドレスです。 InterlockedCompareExchange64(pointer,0,0)などのメソッドを介して 64 ビットアトミック読み取りをサポートする 32 ビット プラットフォームの場合、マッピングは読み取り専用ではなく読み取り/書き込みになり、インターロック操作中のアクセス違反を回避します。 No64BitAtomics cap 値に応じて、このアドレスは 32 ビットまたは 64 ビットの基になる値を指します。

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

MonitoredFence.FenceValueGPUVirtualAddress

[out]GPU のフェンス値の読み取り/書き込みマッピング。 ドライバーは、このアドレスの GPU 書き込みコマンドをコマンド バッファーに挿入することで新しいフェンス値を通知できます。Dxgkrnl は、このフェンス オブジェクト値の待機者のブロックを解除します。 No64BitAtomics cap 値に応じて、このアドレスは 32 ビットまたは 64 ビットの基になる値を指します。 デバイスが CPU とのキャッシュコヒーレンシーをサポートしていない場合は、GPU 仮想アドレスを使用してフェンス値に書き込むべきではありません。 フェンス値へのアクセスは、CPU によってのみ行う必要があります。

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

MonitoredFence.EngineAffinity

[in]ビット フィールド。各ビット位置 (ゼロから始まる) は、GPU 仮想アドレスがコミットされるリンク表示アダプター (LDA) リンク内の物理アダプター インデックスを定義します。 ゼロは、GPU 仮想アドレスがすべての物理アダプターにコミットされることを意味します。

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

MonitoredFence.Padding

PeriodicMonitoredFence

定期的に監視されるフェンスに関する情報を含む構造体。 Type メンバーが D3DDDI_PERIODIC_MONITORED_FENCEと等しい場合、D3DDDI_SYNCHRONIZATIONOBJECTINFO2 の共用体は、MonitoredFence 構造体を保持します。

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

VidPnTargetID

[out]コンポジターが通知を受信する出力 ID。

PeriodicMonitoredFence.hAdapter

[in]VidPnSourceID に関連付けられているアダプターへのハンドル

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out]VSync (VSync の時刻 – 時間パラメーター) の前のオフセットを表します。 Time 値は、VSync 間隔 (1/ DisplayModeRefresh) より長くすることはできません。 時間は 100ns 単位で指定します。

PeriodicMonitoredFence.FenceValueCPUVirtualAddress

[in]CPU のフェンス値の読み取り専用マッピング

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in]GPU のフェンス値の読み取り専用マッピング

PeriodicMonitoredFence.EngineAffinity

[in]GPU VA がマップされる物理アダプターを定義します

PeriodicMonitoredFence.Padding

Reserved

将来使用するために予約されている構造体。 この構造体には、次のメンバーが含まれています。

Reserved.Reserved[8]

SharedHandle

[out]共有ハンドルが現在存在する場合は、共有同期オブジェクトへのハンドル。 ドライバーは NT ハンドルを使用して同期オブジェクトを共有する必要があります。 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing を設定して、NT ハンドルを使用してオブジェクトを共有し、D3DKMTShareObjects を呼び出して NT ハンドルを取得することを示す必要があります。 グローバル ハンドルの使用は安全ではありません。 どのプロセスでも、グローバル ハンドルを推測し、共有オブジェクトを開くことができます。 グローバル ハンドルは、古い D3D ランタイムとの互換性上の理由でのみサポートされます。

必要条件

要件 価値
サポートされる最小クライアント Windows 7
ヘッダー d3dukmdt.h (D3dumddi.h、D3dkmddi.h を含む)

関連項目

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2