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
Windows 10 以降でサポートされています。
MonitoredFence.FenceValueGPUVirtualAddress
[out]GPU のフェンス値の読み取り/書き込みマッピング。 ドライバーは、このアドレスの GPU 書き込みコマンドをコマンド バッファーに挿入することで新しいフェンス値を通知できます。Dxgkrnl
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