다음을 통해 공유


DMO 등록

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

클라이언트가 DMO를 사용하려면 CLSID를 사용자 시스템에 등록해야 합니다. 이 작업은 DLL의 DllRegisterServer 함수를 통해 수행됩니다. ATL(활성 템플릿 라이브러리)을 사용하는 경우 ATL 마법사에서 이 함수를 자동으로 생성합니다.

하나 이상의 표준 DMO 범주에서 DMO를 등록할 수도 있습니다. 이렇게 하면 클라이언트가 DMOEnum 함수를 사용하여 DMO를 검색할 수 있습니다. 범주는 GUID로 정의되며 DMO GUID 섹션에 나열됩니다.

범주에서 DMO를 등록하는 것은 선택 사항입니다. 이렇게 하려면 DMORegister 함수를 호출하고 DMO, CLSID 및 범주의 이름을 지정합니다. 필요에 따라 DDO에서 지원하는 미디어 유형 집합을 등록할 수도 있습니다. 자세한 내용은 DMO 미디어 형식을 참조하세요.

다음 예제에서는 PCM 오디오 입력 및 출력을 지원하는 오디오 효과 DMO를 등록하는 방법을 보여 줍니다. 이 경우 입력 형식과 출력 형식은 동일합니다.

STDAPI DllRegisterServer(void)
{
    // Register the DMO as a PCM audio effect DMO
    DMO_PARTIAL_MEDIATYPE mt;
    mt.type    = MEDIATYPE_Audio;
    mt.subtype = MEDIASUBTYPE_PCM;
    HRESULT hr = DMORegister(
        L"MyDMO",                  // Friendly name
        CLSID_MyDMO,               // CLSID
        DMOCATEGORY_AUDIO_EFFECT,  // Category
        0,                         // Flags 
        1,                         // Number of input types
        &mt,                       // Array of input types
        1,                         // Number of output types
        &mt);                      // Array of output types

    if (FAILED(hr)) return hr;

    // Registers the object, with no typelib.
    return _Module.RegisterServer(FALSE);
}

이 예제에서는 ATL이 프로젝트를 만드는 데 사용되었다고 가정합니다. 함수의 마지막 줄은 표준 ATL 메서드를 호출하여 COM 서버를 등록합니다. ATL을 사용하지 않는 경우 함수가 다르게 표시됩니다.

DMO 등록 취소

DllUnregisterServer 함수는DllRegisterServer 함수가 만드는 모든 레지스트리 항목을 제거해야 합니다. DMO를 등록할 때 DMORegister를 호출하는 경우 DMO 등록을 취소할 때 동일한 범주로 DMOUnregister를 사용해야 합니다.

다음 예제에서는 이전 예제에서 만든 레지스트리 항목을 제거합니다.

STDAPI DllUnregisterServer(void)
{
    DMOUnregister(CLSID_MyDMO, DMOCATEGORY_AUDIO_EFFECT);
    return _Module.UnregisterServer(TRUE);
}

DirectShow 장점 값

필터 그래프를 작성하기 위해 DirectShow는 DDO에 기본 장점 값을 할당합니다. HKEY_CLASSES_ROOT\CLSID DMO의 레지스트리 키에 레지스트리 항목을 추가하여 이 값을 재정의할 수 있습니다. 값이 장점을 지정하는 라는 MeritDWORD 값을 포함합니다.

DMO 작성