Condividi tramite


Allocazione dei buffer per la lettura di file

Nello scenario di lettura dei file di base, i buffer usati per recapitare esempi vengono allocati dall'oggetto di lettura (l'oggetto lettore o l'oggetto lettore sincrono). È tuttavia possibile allocare i buffer. Per altre informazioni sui vantaggi dell'allocazione dei buffer personalizzati, vedere Supporto di esempio allocato dall'utente.

Per usare i buffer personalizzati per la lettura dei file, seguire questa procedura.

  1. Implementare un callback o un callback per il lettore da chiamare quando necessita di un buffer. Se si stanno leggendo esempi di output, usare IWMReaderAllocatorEx::AllocateForOutputEx. Se si stanno leggendo esempi di flusso, usare IWMReaderAllocatorEx::AllocateForStreamEx. Includere qualsiasi logica per la gestione dei buffer adatti all'applicazione.
  2. Allocare un pool di buffer che verranno usati per la lettura dei file.
  3. Configurare il lettore o il lettore sincrono per la lettura. Per altre informazioni, vedere Lettura di file con lettore asincrono o file di lettura con il lettore sincrono.
  4. Prima di iniziare a scrivere, chiamare IWMReaderAdvanced::SetAllocateForOutput o IWMReaderAdvanced::SetAllocateForStream per ogni output e flusso per cui si assegnano buffer usando l'oggetto reader. Per il lettore sincrono, chiamare invece IWMSyncReader2::SetAllocateForOutput o IWMSyncReader2::SetAllocateForStream .
  5. Iniziare a leggere il file.

L'oggetto di lettura eseguirà chiamate al callback dell'allocatore appropriato e otterrà esempi dall'applicazione. La logica di gestione del buffer deve includere un modo per segnalare che un buffer è libero di essere usato di nuovo. In genere, un buffer viene inserito nel pool quando il relativo contenuto viene eseguito il rendering. A seconda dell'applicazione, potrebbe essere necessario solo alcuni buffer nel pool o molti.

Lettura dei file ASF