다음을 통해 공유


관리되는 스트리밍 파이프라인 구성 요소에서 Seek 메서드 구현

네이티브 IStream 인터페이스는 현재 스트림 위치를 검사 메서드를 제공하지 않으므로 메시징 엔진은 다음 Seek 메서드를 사용합니다.

pStream->Seek(0, STREAM_SEEK_CUR, &pNewPosition);  

이 메서드는 스트림 포인터를 이동하는 대신 현재 위치를 쿼리합니다. 따라서 비지정 스트림에서 작동하는 파이프라인 구성 요소를 구현하는 경우 다음 예제와 같이 Stream.Seek 메서드를 사용할 수 있습니다.

예제

override public long Seek(long offset, SeekOrigin origin)  
{  
   long pos = -1;  
  
   switch(origin)  
   {  
      case SeekOrigin.Begin :  
         pos = offset;  
         break;  
      case SeekOrigin.Current :  
         pos = Position + offset;  
         break;  
      case SeekOrigin.End :  
         break;  
   }  
  
   // We generally disallow seeking of the stream  
   // However, in unmanaged code, many people use Seek(0,CURR) to retrieve    // the current position  
   // Special case (that is, if Seek does not change position, do not   
   // throw an exception)  
   if (pos==Position)  
   {  
      return pos;  
   }  
   else  
   {  
      throw new NotSupportedException("ForwardOnlyEventingReadStream does not support Seek()");  
   }  
}  

참고 항목

사용자 지정 파이프라인 구성 요소 개발