다음을 통해 공유


PFND3DDDI_SETDISPLAYMODECB 콜백 함수(d3dumddi.h)

pfnSetDisplayModeCb 함수는 디스플레이로 검색하는 데 사용되는 할당을 설정합니다.

구문

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

매개 변수

hDevice

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

unnamedParam2

pData [in, out]

검색에 사용되는 할당을 설명하는 D3DDDICB_SETDISPLAYMODE 구조체에 대한 포인터입니다.

반환 값

pfnSetDisplayModeCb 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
S_OK 표시 모드가 성공적으로 설정되었습니다.
E_INVALIDARG 매개 변수의 유효성이 검사되었고 잘못된 것으로 확인되었습니다.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT 사용자 모드 표시 드라이버는 D3DDDICB_SETDISPLAYMODE hPrimaryAllocation 멤버가 지정하는 할당과 연결된 표면의 형식을 D3DDDICB_SETDISPLAYMODE PrivateDriverFormatAttributember가 지정하는 형식 특성으로 변환해야 합니다. 그런 다음 드라이버는 pfnSetDisplayModeCb를 다시 호출해야 합니다. 드라이버는 새 할당을 할당하고, 이전 주 표면에서 새 화면으로 비트 블록 전송(비트블렛)을 수행한 다음, 드라이버가 모든 후속 작업에 이 할당에 새 할당 핸들을 사용하는 한 이전 주 데이터베이스를 삭제할 수 있습니다. 드라이버는 pfnSetDisplayModeCb가 다른 반환 값을 반환할 때까지 이 프로세스를 반복해야 합니다.

이 함수는 다른 HRESULT 값을 반환할 수도 있습니다.

설명

Microsoft Direct3D 런타임이 사용자 모드 디스플레이 드라이버의 SetDisplayMode 또는 SetDisplayModeDXGI 함수를 호출하여 기본 표면을 디스플레이로 검사하도록 설정한 후 사용자 모드 디스플레이 드라이버는 pfnSetDisplayModeCb 함수를 호출하여 검사에 사용되는 기본 기본 할당을 설정합니다.

참고 사용자 모드 표시 드라이버가 pfnSetDisplayModeCb 를 호출하여 확장된 형식, 다중 샘플링 방법 또는 둘 다를 사용하는 새 디스플레이 모드를 설정하기 전에 드라이버는 현재 GDI 디스플레이 모드가 새 디스플레이 모드와 동일한 해상도를 갖는지 확인해야 합니다. 그렇지 않으면 pfnSetDisplayModeCb 는 E_INVALIDARG 반환합니다.
 

Direct3D 버전 11 참고: 드라이버가 pfnSetDisplayModeCb를 호출하는 방법에 대한 자세한 내용은 Direct3D 10의 변경 내용을 참조하세요.

예제

다음 코드 예제에서는 검색을 위한 할당을 디스플레이로 설정하는 방법을 보여 있습니다.

HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
    DWORD   dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
    HRESULT hr;
    // Timestamp the source surface
    m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
    // Send the presentation request to the display miniport driver
    D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};

    SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
                                        dwSrcSurf);

    hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);

    return (hr);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI