다음을 통해 공유


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

세마포에 대한 정보를 포함하는 구조체입니다. Type 멤버가 D3DDDI_SEMAPHORE같으면 D3DDDI_SYNCHRONIZATIONOBJECTINFO2 공용 구조체는 세마포 구조를 보유합니다.

Semaphore.MaxCount

개체가 대기할 수 있는 최대 이벤트 수입니다.

Semaphore.InitialCount

개체가 대기 중인 초기 이벤트 수입니다.

Fence

펜스에 대한 정보가 들어 있는 구조체입니다. Type 멤버가 D3DDDI_FENCE같으면 D3DDDI_SYNCHRONIZATIONOBJECTINFO2 공용 구조체는 펜스 구조를 보유합니다.

Fence.FenceValue

초기 펜스 값을 지정하는 64비트 값입니다.

CPUNotification

CPU 알림에 대한 정보를 포함하는 구조체입니다. Type 멤버가 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 상한 값에 따라 이 주소는 32비트 또는 64비트 기본 값을 가리킵니다.

Windows 10부터 지원됩니다.

MonitoredFence.FenceValueGPUVirtualAddress

[out] GPU에 대한 펜스 값의 읽기-쓰기 매핑입니다. 드라이버는 이 주소에 대한 GPU 쓰기 명령을 명령 버퍼에 삽입하여 새 펜스 값에 신호를 보낼 수 있으며, Dxgkrnl 이 펜스 개체 값에 대한 웨이터의 차단을 해제합니다. No64BitAtomics 상한 값에 따라 이 주소는 32비트 또는 64비트 기본 값을 가리킵니다. 디바이스가 CPU와의 캐시 일관성을 지원하지 않는 경우 GPU 가상 주소를 사용하여 펜스 값에 쓰지 않아야 합니다. 펜스 값에 대한 액세스는 CPU에서만 수행해야 합니다.

Windows 10부터 지원됩니다.

MonitoredFence.EngineAffinity

[in] 각 비트 위치(0부터 시작)가 GPU 가상 주소를 커밋할 LDA(링크 표시 어댑터) 링크에서 실제 어댑터 인덱스를 정의하는 비트 필드입니다. 0은 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 시간 – 시간 매개 변수) 이전의 오프셋을 나타냅니다. 시간 값은 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