Compartir a través de


Interfaz IAMCopyCaptureFileProgress (strmif.h)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

La interfaz IAMCopyCaptureFileProgress es una interfaz de devolución de llamada usada por el método ICaptureGraphBuilder2::CopyCaptureFile.

Dado que el método CopyCaptureFile puede tardar mucho tiempo en completarse, una aplicación puede implementar esta interfaz para recibir notificaciones periódicas sobre el progreso de la operación de copia. Si la aplicación no necesita recibir esta información, no es necesario implementar la interfaz.

Herencia

La interfaz IAMCopyCaptureFileProgress hereda de la interfaz IUnknown. IAMCopyCaptureFileProgress también tiene estos tipos de miembros:

Métodos

La interfaz IAMCopyCaptureFileProgress tiene estos métodos.

 
IAMCopyCaptureFileProgress::P rogress

El método Progress lo llama periódicamente el método ICaptureGraphBuilder2::CopyCaptureFile mientras copia el archivo.

Observaciones

Para usar esta interfaz, implemente una clase que herede la interfaz e implemente todos sus métodos, incluidos los métodos de IUnknown. En la aplicación, cree una instancia de la clase y pásela al método CopyCaptureFile. No es necesario implementar el recuento de referencias COM en la clase, siempre y cuando se garantice que el objeto no se elimine antes de que el método copyCaptureFile devuelva.

En el ejemplo siguiente se muestra una clase que implementa la interfaz :

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;
    };
};
En el ejemplo siguiente se usa esta clase en el método CopyCaptureFile:
C++
Ámbito del objeto CProgress { CProgress Prog; // Supongamos que pBuilder es un puntero ICaptureGraphBuilder2 inicializado.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast 

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de strmif.h (include Dshow.h)

Consulte también

interfaces