DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CPersistStream   [목차열람] [주소복사] [슬롯비우기]
CPersistStream 클래스
 
Microsoft DirectX 9.0

CPersistStream 클래스

CPersistStream 클래스의 계층

CPersistStream 는, 필터의 영속적인 프로퍼티 (보존된 그래프의 필터 프로퍼티)의 base class이다.

CPersistStream 를 사용하는 간단한 방법은 다음과 같다.

  1. 필터가 이 클래스를 계승하도록(듯이) 한다.
  2. 클래스에 WriteToStreamReadFromStream 를 처리 한다. 이것들은, 여기에 나타내는 플레이스홀더로서의 보고 기능하는 함수를 오버라이드(override) 한다.
  3. NonDelegatingQueryInterface 를,IPersistStrea 를 처리하도록(듯이) 변경한다.
  4. 보존하는 데이터의 바이트수의 상한을 돌려주는 SizeMax 를 처리 한다.

    Unicode™ 의 데이터를 보존하는 경우는, WCHAR 가 2 바이트인 것에 주의한다.

  5. 데이터가 변경되었을 때에,SetDirty 를 호출한다.

버전 번호

어떤 시점으로, 데이터의 포맷을 변경 또는 확장하고 싶은 경우가 있다. 이 경우, 이전에 보존한 모든 스트림에 버전 번호를 붙여, 스트림을 읽어냈을 때에, 스트림이 낡은 포맷인지, 새로운 포맷인지를 구별할 수 있도록(듯이) 할 필요가 있다. 이것을 실시하기 위해서(때문에), 이 클래스는 버전 번호의 읽고 쓰기를 실시한다. 쓰기시에는, 이 클래스는 GetSoftwareVersion 를 호출해, 그 때에 사용되고 있는 소프트웨어의 버전을 문의한다. 실질적으로, 이것이 파일내의 데이터 레이아웃의 버전 번호가 된다. 이 클래스는, 데이터내의 최초의 항목으로서 이것을 기입한다. 버전 번호를 변경하는 경우는,GetSoftwareVersion 를 처리 (오버라이드(override)) 한다. 이 클래스는,ReadFromStream 를 호출하기 전에, 파일로부터 mPS_dwFileVersion 에 버전 번호를 읽어내므로,ReadFromStreammPS_dwFileVersion 를 체크해, 낡은 버전의 파일을 읽어내고 있는지를 확인할 수 있다. 보통, 파일을 읽어내는 소프트웨어의 버전 이전의 버전의 파일을 받아들일 필요가 있다.

프로텍트 데이터 멤버

mPS_dwFileVersion 파일의 버전 번호.
mPS_fDirty 이 스트림의 데이터를 보존해야 한다.

멤버 함수

CPersistStream CPersistStream 개체를 생성 한다.
SetDirty 개체를 스트림에 보존해야 하는 것을 나타낸다.

오버라이드(override) 가능한 멤버 함수

GetClassID 이 스트림의 클래스 식별자를 얻어온다.
GetSoftwareVersion 이 파일 포맷의 버전 번호를 얻어온다.
ReadFromStream 스트림으로부터 필터의 데이터를 읽어낸다.
SizeMax 데이터로 필요한 바이트수 (버전 번호를 포함하지 않는다)를 얻어온다.
WriteToStream 스트림에 필터의 데이터를 기입한다.

CPersistStreamIPersistStream 를 처리 한다. 처리의 더 자세한 정보는, Microsoft Platform SDK 의 「COM 레퍼런스」를 참조할것.

처리 되는 IPersistStream 메서드

GetSizeMax 데이터로 필요한 바이트수 (버전 번호를 포함한다)를 얻어온다.
IsDirty 개체를 보존해야 하는지 어떤지를 체크한다.
Load 데이터를 스트림으로부터 메모리에 로드한다.
Save 데이터를 메모리로부터 스트림에 보존한다.

↑TOP