Implémentation d’une méthode Seek dans un composant de pipeline en continu géré
L’interface IStream native ne fournit pas de méthode pour case activée la position actuelle du flux, de sorte que le moteur de messagerie utilise la méthode Seek suivante.
pStream->Seek(0, STREAM_SEEK_CUR, &pNewPosition);
Cette méthode ne déplace pas le pointeur de flux mais elle recherche la position actuelle. Par conséquent, si vous implémentez un composant de pipeline qui fonctionne avec un flux non unique, vous pouvez utiliser la méthode Stream.Seek comme dans l’exemple suivant.
Exemple
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()");
}
}
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour