CPersistStream 클래스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
CPersistStream
는 필터의 영구 속성(즉, 저장된 그래프의 필터 속성)에 대한 기본 클래스입니다.
가장 간단한 사용 CPersistStream
방법은 다음과 같습니다.
필터가 이 클래스를 상속하도록 정렬합니다.
클래스에서 WriteToStream 및 ReadFromStream 을 구현합니다. 여기서는 자리 표시자 역할을 하는 함수를 재정의합니다.
IPersistStream을 처리하도록 NonDelegatingQueryInterface를 변경합니다.
SizeMax를 구현하여 저장한 데이터 바이트 수에 상한을 반환합니다.
유니코드™ 데이터를 저장하는 경우 WCHAR는 2바이트입니다.
데이터가 변경되면 SetDirty를 호출합니다.
버전 번호
데이터 형식을 변경하거나 확장하기로 결정할 수도 있습니다. 그런 다음, 이전 스트림을 읽을 때 이전 또는 새 양식을 나타내는지 여부를 알 수 있도록 모든 이전 저장된 스트림에 버전 번호가 있었으면 합니다. 이를 지원하기 위해 이 클래스는 버전 번호를 쓰고 읽습니다. 작성할 때 GetSoftwareVersion 을 호출하여 현재 사용 중인 소프트웨어의 버전에 대해 문의합니다. (실제로 파일의 데이터 레이아웃 버전 번호입니다.) 이를 데이터의 첫 번째 것으로 씁니다. 버전을 변경하려면 GetSoftwareVersion을 구현(재정의)합니다. ReadFromStream을 호출하기 전에 파일에서 mPS_dwFileVersion 버전 번호를 읽으므로 ReadFromStream에서 mPS_dwFileVersion 검사 이전 버전 파일을 읽고 있는지 확인할 수 있습니다. 일반적으로 버전을 읽는 소프트웨어 버전보다 최신 버전이 아닌 파일을 수락해야 합니다.
CPersistStream 은 IPersistStream을 구현합니다. 자세한 구현 정보는 Microsoft Platform SDK의 COM 참조를 참조하세요.
보호된 데이터 멤버 | Description |
---|---|
mPS_dwFileVersion | 파일의 버전 번호입니다. |
mPS_fDirty | 이 스트림에 대한 데이터를 저장해야 합니다. |
멤버 함수 | Description |
CPersistStream | CPersistStream 개체를 생성합니다. |
SetDirty | 개체를 스트림에 저장해야 했음을 나타냅니다. |
재정의 가능한 멤버 함수 | Description |
GetClassID | 이 스트림의 클래스 식별자를 검색합니다. |
GetSoftwareVersion | 이 파일 형식의 버전 번호를 검색합니다. |
ReadFromStream | 스트림에서 필터의 데이터를 읽습니다. |
SizeMax | 데이터에 필요한 바이트 수를 검색합니다(버전 번호는 포함하지 않음). |
WriteToStream | 필터의 데이터를 스트림에 씁니다. |
IPersistStream 메서드 | Description |
GetSizeMax | 데이터(버전 번호 포함)에 필요한 바이트 수를 검색합니다. |
IsDirty | 개체를 저장해야 하는지 확인합니다. |
로드 | 스트림에서 메모리로 데이터를 로드합니다. |
저장 | 메모리에서 스트림으로 데이터를 저장합니다. |