Formati di dati e supporti di trasferimento

La maggior parte delle piattaforme, tra cui Windows, definisce un protocollo standard per il trasferimento di dati tra applicazioni, in base a un set di funzioni denominate Appunti. Le applicazioni che usano queste funzioni possono condividere i dati anche se i formati di dati nativi sono molto diversi. In genere, questi Appunti presentano due carenze significative che COM ha superato.

Prima di tutto, le descrizioni dei dati usano solo un identificatore di formato, ad esempio l'identificatore di formato degli Appunti a 16 bit in Windows, il che significa che gli Appunti possono descrivere solo la struttura dei dati, ovvero l'ordinamento dei bit. Può segnalare, "Ho una bitmap" "o ho del testo", ma non può specificare i dispositivi di destinazione per i quali i dati sono composti, quali visualizzazioni o aspetti di se stessi i dati possono fornire o quali supporti di archiviazione sono più adatti per il trasferimento. Ad esempio, non può segnalare, "Ho una stringa di testo archiviata in memoria globale e formattata per la presentazione sullo schermo o su una stampante" o "Ho una bitmap di schizzo di anteprima di cui è stato eseguito il rendering per una stampante a matrice di punti 100 dpi e archiviata come file disco".

In secondo luogo, tutti i trasferimenti di dati che usano gli Appunti si verificano in genere tramite la memoria globale. L'uso della memoria globale è ragionevolmente efficiente per piccole quantità di dati, ma terribilmente inefficiente per grandi quantità, ad esempio un oggetto multimediale di 20 MB. La memoria globale è lenta per un oggetto dati di grandi dimensioni, la cui dimensione richiede un notevole scambio alla memoria virtuale su disco. Nei casi in cui i dati scambiati risiedano per lo più su disco, forzandoli attraverso questo collo di bottiglia della memoria virtuale è estremamente inefficiente. Un modo migliore sarebbe ignorare completamente la memoria globale e semplicemente trasferire i dati direttamente su disco.

Per risolvere questi problemi, COM fornisce due strutture di dati: FORMATETC e STGMEDIUM. Per ulteriori informazioni, vedi gli argomenti seguenti:

Trasferimento dati