다음을 통해 공유


Windows Media Format 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 주석이 포함됩니다.

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

시작