다음을 통해 공유


Windows 미디어 형식 SDK 코드 예제 사용

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

이 SDK의 많은 설명 섹션에는 코드 예제가 포함되어 있습니다. 예제는 가능한 한 명확하고 간결하게 작성됩니다. 예제를 읽을 때는 다음 규칙을 알고 있어야 합니다.

  • 모든 예제는 windows.h 및 wmsdk.h를 포함하는 것으로 간주됩니다. 다른 필수 헤더 파일은 설명 텍스트에 설명되어 있습니다.

  • 오류가 발생하는 경우 오류 검사가 함수의 중단으로 제한되었습니다. 애플리케이션에서 특정 오류 코드를 검사 일종의 오류 보고를 제공해야 합니다.

    HRESULT 값을 반환하는 메서드 또는 함수에서 반환 값을 확인할 때 FAILED 매크로를 사용하여 반환 값이 실패를 나타내는지 여부를 검색해야 합니다.

    HRESULT hr;
    hr = SomeFunction();
    if (FAILED(hr))
    {
       // Check for specific error values.
    }
    

    이 설명서의 많은 예제에서는 다음 코드에 정의된 GOTO_EXIT_IF_FAILED 매크로를 사용합니다.

    #ifndef GOTO_EXIT_IF_FAILED
    #define GOTO_EXIT_IF_FAILED(hr) if(FAILED(hr)) goto Exit;
    #endif
    

    이러한 예제 함수에는 각각 "Exit:"라는 태그가 있으며, 그 후에 함수에 할당된 모든 인터페이스와 메모리가 해제되고 오류 코드(있는 경우)가 반환됩니다.

  • 인터페이스 및 메모리는 SAFE_RELEASE 및 SAFE_ARRAY_DELETE 라는 매크로를 사용하여 코드 예제에서 릴리스됩니다. 이러한 매크로는 다음 코드에 정의되어 있습니다.

    #ifndef SAFE_RELEASE
    #define SAFE_RELEASE(x) \
       if(x != NULL)        \
       {                    \
          x->Release();     \
          x = NULL;         \
       }
    #endif
    
    #ifndef SAFE_ARRAY_DELETE
    #define SAFE_ARRAY_DELETE(x) \
       if(x != NULL)             \
       {                         \
          delete[] x;            \
          x = NULL;              \
       }
    #endif
    
  • 예제를 의미하려면 한 예제의 논리를 다른 예제에 포함해야 하는 경우가 많습니다. 이러한 인스턴스에서는 적절한 코드 예제에 대한 참조와 함께 TODO 주석이 포함됩니다.

  • 코드를 더 쉽게 읽을 수 있도록 이 설명서의 예제 함수 중 입력 매개 변수의 유효성을 검사하지 않습니다. 이러한 함수를 코드에 복사하는 경우 입력 매개 변수의 유효성을 검사해야 합니다.

시작