다음을 통해 공유


PFND3DDDI_QUERYRESIDENCYCB 콜백 함수(d3dumddi.h)

pfnQueryResidencyCb 함수는 리소스 또는 할당 목록의 상주 상태 쿼리합니다.

구문

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

HRESULT Pfnd3dddiQueryresidencycb(
  HANDLE hDevice,
  const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}

매개 변수

hDevice

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

unnamedParam2

pData [in, out]

리소스 또는 할당 목록의 상주 상태 설명하는 D3DDDICB_QUERYRESIDENCY 구조체에 대한 포인터입니다.

반환 값

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

반환 코드 설명
S_OK 상주 상태 성공적으로 반환되었습니다.
E_INVALIDARG 매개 변수의 유효성이 검사되었고 잘못된 것으로 확인되었습니다.

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

설명

사용자 모드 표시 드라이버는 pfnQueryResidencyCb 함수를 호출하여 리소스 또는 할당 목록을 통해 할당의 상주 상태 쿼리할 수 있습니다. 드라이버가 리소스를 통해 할당의 상주 상태 쿼리하는 경우 리소스에 속하는 모든 할당이 쿼리됩니다. 일반적으로 사용자 모드 표시 드라이버는 Microsoft Direct3D 런타임이 사용자 모드 표시 드라이버의 QueryResourceResidency 또는 QueryResourceResidencyDXGI 함수를 호출하여 리소스의 상주 여부를 확인한 후 리소스 의 상주 또는 할당 목록을 쿼리합니다. 그러나 사용자 모드 표시 드라이버는 언제든지 리소스의 상주 또는 할당 목록을 쿼리할 수 있습니다.

예제

다음 코드 예제에서는 상주 상태 쿼리하는 방법을 보여줍니다.

HRESULT
CD3DContext::QueryResourceResidency(CONST D3DDDIARG_QUERYRESOURCERESIDENCY* pQRR)
{
    D3DDDICB_QUERYRESIDENCY queryRes;
    D3DDDI_RESIDENCYSTATUS  resStatus = (D3DDDI_RESIDENCYSTATUS)0;
    HRESULT hr;
    BOOL    bPartInSharedMem = FALSE;

    for (UINT i = 0; i < pQRR->NumResources; i++) {
        memset(&queryRes, 0, sizeof(queryRes));
        queryRes.hResource = m_RTbl[(DWORD)(DWORD_PTR)pQRR->pHandleList[i]].m_hResRuntime;
        if (! queryRes.hResource) {
            return (DDERR_INVALIDPARAMS);
        }
        queryRes.pResidencyStatus = &resStatus;
        hr = m_d3dCallbacks.pfnQueryResidencyCb(m_hD3D, &queryRes);
        if (FAILED(hr)) {
            return (hr);
        }
        switch (resStatus) {
        case D3DDDI_RESIDENCYSTATUS_NOTRESIDENT:
            return S_NOT_RESIDENT;
        case D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY:
            bPartInSharedMem = TRUE;
            break;
        case D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY:
            break;
        default:
            return DDERR_GENERIC;
        }
    }
    if (bPartInSharedMem) {
        return S_RESIDENT_IN_SHARED_MEMORY;
    }
    else {
        return  S_OK;
    }
}

요구 사항

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

추가 정보

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI