PFND3DDDI_DEALLOCATECB 콜백 함수(d3dumddi.h)

pfnDeallocateCb 콜백 함수는 리소스 개체를 만든 경우 할당 또는 커널 모드 리소스 개체를 해제합니다.

구문

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

HRESULT Pfnd3dddiDeallocatecb(
  HANDLE hDevice,
  const D3DDDICB_DEALLOCATE *unnamedParam2
)
{...}

매개 변수

hDevice

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

unnamedParam2

pData [in]

해제할 리소스를 설명하는 D3DDDICB_DEALLOCATE 구조체에 대한 포인터입니다.

반환 값

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

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

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

설명

사용자 모드 표시 드라이버는 다음과 같은 방법으로 할당을 해제할 수 있습니다.

  • 개별적으로 pData에서 가리키는 D3DDDICB_DEALLOCATE 구조체의 hResource 멤버를 NULL로 설정하고 D3DDDICB_DEALLOCATE HandleList 멤버의 배열을 해제할 할당 핸들로 채웁니다.
  • 그룹에서 hResource 를 할당을 해제할 리소스 핸들로 설정합니다. hResourceNULL이 아닌 경우 D3DDDICB_DEALLOCATE HandleListNumAllocations 멤버는 무시됩니다.
사용자 모드 표시 드라이버가 hResourceNULL 로 설정하고 HandleList 의 모든 배열 요소를 채워 모든 할당을 해제하는 경우 드라이버는 이후에 pfnDeallocateCb 함수를 다시 호출하여 hResource 를 리소스에 대한 핸들로 설정하여 리소스를 해제해야 합니다.

pfnDeallocateCb 함수는 사용자 모드 표시 드라이버의 DestroyResource 또는 DestroyResource(D3D10) 함수와 다릅니다. 그러나 사용자 모드 표시 드라이버는 일반적으로 DestroyResource 또는 DestroyResource(D3D10) 함수에 대한 호출에 대한 응답으로 pfnDeallocateCb를 호출합니다.

Direct3D 버전 9 참고: 리소스를 만들고 삭제하는 방법에 대한 자세한 내용은 리소스 만들기 및 소멸 처리를 참조하세요.

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

다음 코드 예제에서는 리소스를 해제하는 방법을 보여 있습니다.

    D3DDDICB_DEALLOCATE deAllocCB;
    HRESULT             hr;
    D3DKMT_HANDLE       hKMAllocHandle;

    memset(&deAllocCB, 0, sizeof(deAllocCB));

    deAllocCB.hResource = m_hCurResRuntime;

    hr = m_d3dCallbacks.pfnDeallocateCb(m_hD3D, &deAllocCB);
    if ((m_hCurResRuntime) && (SUCCEEDED(hr))) {
        m_bCurResFreed = TRUE;
    }

요구 사항

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

추가 정보

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb