다음을 통해 공유


CPersistStream 클래스

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

cpersiststream 클래스 계층 구조

CPersistStream 는 필터의 영구 속성(즉, 저장된 그래프의 필터 속성)에 대한 기본 클래스입니다.

가장 간단한 사용 CPersistStream 방법은 다음과 같습니다.

  1. 필터가 이 클래스를 상속하도록 정렬합니다.

  2. 클래스에서 WriteToStreamReadFromStream 을 구현합니다. 여기서는 자리 표시자 역할을 하는 함수를 재정의합니다.

  3. IPersistStream을 처리하도록 NonDelegatingQueryInterface를 변경합니다.

  4. SizeMax를 구현하여 저장한 데이터 바이트 수에 상한을 반환합니다.

    유니코드™ 데이터를 저장하는 경우 WCHAR는 2바이트입니다.

  5. 데이터가 변경되면 SetDirty를 호출합니다.

버전 번호

데이터 형식을 변경하거나 확장하기로 결정할 수도 있습니다. 그런 다음, 이전 스트림을 읽을 때 이전 또는 새 양식을 나타내는지 여부를 알 수 있도록 모든 이전 저장된 스트림에 버전 번호가 있었으면 합니다. 이를 지원하기 위해 이 클래스는 버전 번호를 쓰고 읽습니다. 작성할 때 GetSoftwareVersion 을 호출하여 현재 사용 중인 소프트웨어의 버전에 대해 문의합니다. (실제로 파일의 데이터 레이아웃 버전 번호입니다.) 이를 데이터의 첫 번째 것으로 씁니다. 버전을 변경하려면 GetSoftwareVersion을 구현(재정의)합니다. ReadFromStream을 호출하기 전에 파일에서 mPS_dwFileVersion 버전 번호를 읽으므로 ReadFromStream에서 mPS_dwFileVersion 검사 이전 버전 파일을 읽고 있는지 확인할 수 있습니다. 일반적으로 버전을 읽는 소프트웨어 버전보다 최신 버전이 아닌 파일을 수락해야 합니다.

CPersistStreamIPersistStream을 구현합니다. 자세한 구현 정보는 Microsoft Platform SDK의 COM 참조를 참조하세요.

보호된 데이터 멤버 Description
mPS_dwFileVersion 파일의 버전 번호입니다.
mPS_fDirty 이 스트림에 대한 데이터를 저장해야 합니다.
멤버 함수 Description
CPersistStream CPersistStream 개체를 생성합니다.
SetDirty 개체를 스트림에 저장해야 했음을 나타냅니다.
재정의 가능한 멤버 함수 Description
GetClassID 이 스트림의 클래스 식별자를 검색합니다.
GetSoftwareVersion 이 파일 형식의 버전 번호를 검색합니다.
ReadFromStream 스트림에서 필터의 데이터를 읽습니다.
SizeMax 데이터에 필요한 바이트 수를 검색합니다(버전 번호는 포함하지 않음).
WriteToStream 필터의 데이터를 스트림에 씁니다.
IPersistStream 메서드 Description
GetSizeMax 데이터(버전 번호 포함)에 필요한 바이트 수를 검색합니다.
IsDirty 개체를 저장해야 하는지 확인합니다.
로드 스트림에서 메모리로 데이터를 로드합니다.
저장 메모리에서 스트림으로 데이터를 저장합니다.