다음을 통해 공유


IAMCopyCaptureFileProgress 인터페이스(strmif.h)

[DirectShow이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, Media Foundation오디오/비디오 캡처 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngineAudio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

IAMCopyCaptureFileProgress 인터페이스는 ICaptureGraphBuilder2::CopyCaptureFile 메서드에서 사용하는 콜백 인터페이스입니다.

CopyCaptureFile 메서드를 완료하는 데 시간이 오래 걸릴 수 있으므로 애플리케이션은 복사 작업의 진행률에 대한 정기적인 알림을 수신하기 위해 이 인터페이스를 구현할 수 있습니다. 애플리케이션이 이 정보를 받을 필요가 없는 경우 인터페이스를 구현할 필요가 없습니다.

상속

IAMCopyCaptureFileProgress 인터페이스는 IUnknown 인터페이스에서 상속됩니다. IAMCopyCaptureFileProgress 다음과 같은 형식의 멤버도 있습니다.

방법

IAMCopyCaptureFileProgress 인터페이스에는 이러한 메서드가 있습니다.

 
IAMCopyCaptureFileProgress::P rogress

Progress 메서드는 파일을 복사하는 동안 ICaptureGraphBuilder2::CopyCaptureFile 메서드에 의해 주기적으로 호출됩니다.

발언

이 인터페이스를 사용하려면 인터페이스를 상속하고 IUnknown메서드를 포함하여 모든 메서드를 구현하는 클래스를 구현합니다. 애플리케이션에서 클래스의 인스턴스를 만들고 CopyCaptureFile 메서드에 전달합니다. CopyCaptureFile 메서드가 반환되기 전에 개체가 삭제되지 않도록 보장되는 한 클래스에서 COM 참조 계산을 구현할 필요가 없습니다.

다음 예제에서는 인터페이스를 구현하는 클래스를 보여 줍니다.

C++
class CProgress : public IAMCopyCaptureFileProgress 
{
public:
    STDMETHODIMP_(ULONG) AddRef() { return 1; }
    STDMETHODIMP_(ULONG) Release() { return 0; }
    STDMETHODIMP QueryInterface(REFIID iid, void **ppv) 
    {
        if  (ppv == NULL) 
        {
            return E_POINTER;
        }
        else if (iid == __uuidof(IUnknown))
        {
            *ppv = static_cast<IUnknown*>(this);
        }
        else if (iid == IID_IAMCopyCaptureFileProgress) 
        {
            *ppv = static_cast<IAMCopyCaptureFileProgress*>(this);
        }
        else
        {
            return E_NOINTERFACE;
        }
        return S_OK;
    }
    STDMETHODIMP Progress(int iPercent) 
    {
        if (iPercent < 0 || iPercent > 100) 
        {
            return E_INVALIDARG;
        }

        TCHAR szMsg[32];
        StringCchPrintf(szMsg, 32, TEXT("Progress: %d%%"), iPercent);
        // Assume g_hwndStatus is a valid HWND.
        SetWindowText(g_hwndStatus, szMsg);  

        return S_OK;
    };
};
다음 예제에서는 CopyCaptureFile 메서드에서 이 클래스를 사용합니다.
C++
CProgress 개체의 범위 { CProgress Prog; // pBuilder가 초기화된 ICaptureGraphBuilder2 포인터라고 가정합니다.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast 

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 strmif.h(Dshow.h 포함)

참고 항목

인터페이스