Partager via


Allocation de mémoires tampons pour la lecture de fichiers

Dans le scénario de lecture de fichier le plus simple, les mémoires tampons utilisées pour remettre des exemples sont allouées par l’objet de lecture (l’objet reader ou l’objet lecteur synchrone). Toutefois, vous pouvez allouer vous-même des mémoires tampons. Pour plus d’informations sur les avantages de l’allocation de vos propres mémoires tampons, consultez Exemple de support alloué par l’utilisateur.

Pour utiliser vos propres mémoires tampons pour la lecture de fichiers, procédez comme suit.

  1. Implémentez un rappel ou des rappels que le lecteur doit appeler lorsqu’il a besoin d’une mémoire tampon. Si vous lisez des exemples de sortie, utilisez IWMReaderAllocatorEx::AllocateForOutputEx. Si vous lisez des exemples de flux, utilisez IWMReaderAllocatorEx::AllocateForStreamEx. Incluez la logique de gestion des mémoires tampons qui conviennent à votre application.
  2. Allouez un pool de mémoires tampons que vous utiliserez pour la lecture de fichiers.
  3. Configurez le lecteur ou le lecteur synchrone pour la lecture. Pour plus d’informations, consultez Lecture de fichiers avec le lecteur asynchrone ou Lecture de fichiers avec le lecteur synchrone.
  4. Avant de commencer à écrire, appelez IWMReaderAdvanced::SetAllocateForOutput ou IWMReaderAdvanced::SetAllocateForStream pour chaque sortie et flux pour lesquels vous allouez des mémoires tampons à l’aide de l’objet lecteur. Pour le lecteur synchrone, appelez plutôt IWMSyncReader2::SetAllocateForOutput ou IWMSyncReader2::SetAllocateForStream .
  5. Commencez à lire le fichier.

L’objet de lecture effectue des appels au rappel d’allocateur approprié et obtient des exemples à partir de votre application. Votre logique de gestion de la mémoire tampon doit inclure un moyen de signaler qu’une mémoire tampon est libre d’être réutilisée. En règle générale, une mémoire tampon est remise dans le pool lorsque son contenu est rendu. Selon votre application, vous pouvez avoir besoin de quelques mémoires tampons dans le pool ou plusieurs.

Lecture de fichiers ASF