數據格式和傳輸媒體
大部分的平臺,包括 Windows,都會根據稱為剪貼簿的一組函式,定義在應用程式之間傳輸數據的標準通訊協定。 即使原生數據格式大不相同,使用這些函式的應用程式也可以共享數據。 一般而言,這些剪貼簿有 COM 所克服的兩個重要缺點。
首先,數據描述只會使用格式識別碼,例如 Windows 上的單一 16 位剪貼簿格式識別碼,這表示剪貼簿只能描述其數據的結構,也就是位的排序。 它可以報告「我有位圖」「或我有一些文字」,但無法指定數據所組成的目標裝置、數據可以提供哪些檢視或層面,或最適合其傳輸的儲存媒體。 例如,它無法報告「我有一串文字儲存在全域記憶體中,並格式化為在螢幕上或印表機上的簡報」或「我有針對100 dpi點矩陣印表機轉譯的縮圖素圖,並儲存為磁碟檔案」。
其次,使用剪貼簿的所有數據傳輸通常會透過全域記憶體進行。 對少量的數據使用全域記憶體相當有效率,但對於大量數據來說,效率非常低下,例如 20 MB 多媒體物件。 大型數據物件的全域記憶體速度很慢,其大小需要大量交換到磁碟上的虛擬記憶體。 如果交換的數據大部分都位於磁碟上,則透過此虛擬記憶體瓶頸強制執行數據會非常沒有效率。 更好的方式會完全略過全域記憶體,並直接將數據傳輸到磁碟。
為了減輕這些問題,COM 提供兩個數據結構:FORMATETC 和 STGMEDIUM。 如需詳細資訊,請參閱下列主題:
相關主題