Datenformate und Übertragungsmedien
Die meisten Plattformen, einschließlich Windows, definieren ein Standardprotokoll für die Übertragung von Daten zwischen Anwendungen, basierend auf einer Reihe von Funktionen, die als Zwischenablage bezeichnet werden. Anwendungen, die diese Funktionen verwenden, können Daten auch dann freigeben, wenn sich ihre nativen Datenformate stark unterscheiden. Im Allgemeinen weisen diese Zwischenablage zwei wesentliche Nachteile auf, die COM behoben hat.
Zunächst verwenden Datenbeschreibungen nur einen Formatbezeichner, z. B. den einzelnen 16-Bit-Zwischenablageformatbezeichner für Windows. Dies bedeutet, dass die Zwischenablage nur die Struktur ihrer Daten beschreiben kann, d. h. die Reihenfolge der Bits. Sie kann "I have a bitmap" (Ich habe eine Bitmap) "or I have some text" (Ich habe eine Bitmap) melden, aber es können nicht die Zielgeräte angegeben werden, für die die Daten zusammengesetzt sind, welche Ansichten oder Aspekte von sich selbst die Daten bereitstellen können oder welche Speichermedien für die Übertragung am besten geeignet sind. Beispielsweise kann nicht angezeigt werden: "Ich habe eine Textzeichenfolge, die im globalen Speicher gespeichert und zur Darstellung entweder auf dem Bildschirm oder auf einem Drucker formatiert ist" oder "Ich habe eine Bitmap für Miniaturansichtszeichnungen, die für einen 100-dpi-Punktmatrixdrucker gerendert und als Datenträgerdatei gespeichert ist".
Zweitens erfolgen alle Datenübertragungen, die die Zwischenablage verwenden, in der Regel über globalen Arbeitsspeicher. Die Verwendung des globalen Arbeitsspeichers ist für kleine Datenmengen relativ effizient, aber für große Mengen, z. B. ein 20 MB großes Multimediaobjekt, grauenhaft ineffizient. Der globale Arbeitsspeicher ist für ein großes Datenobjekt langsam, dessen Größe einen erheblichen Austausch des virtuellen Speichers auf dem Datenträger erfordert. In Fällen, in denen sich die ausgetauschten Daten ohnehin größtenteils auf dem Datenträger befinden, ist das Erzwingen dieses Engpasses im virtuellen Speicher äußerst ineffizient. Eine bessere Möglichkeit wäre, den globalen Arbeitsspeicher vollständig zu überspringen und die Daten einfach direkt auf den Datenträger zu übertragen.
Um diese Probleme zu beheben, stellt COM zwei Datenstrukturen bereit: FORMATETC und STGMEDIUM. Weitere Informationen finden Sie in den folgenden Themen: