Udostępnij za pośrednictwem


Formaty danych i nośnik transferowy

Większość platform, w tym Windows, definiuje standardowy protokół do przesyłania danych między aplikacjami na podstawie zestawu funkcji nazywanych schowkiem. Aplikacje korzystające z tych funkcji mogą udostępniać dane nawet wtedy, gdy ich natywne formaty danych są bardzo różne. Ogólnie rzecz biorąc, te schowki mają dwa znaczące braki, które COM przezwyciężył.

Najpierw opisy danych używają tylko identyfikatora formatu, takiego jak pojedynczy 16-bitowy identyfikator formatu schowka w systemie Windows, co oznacza, że schowek może opisywać tylko strukturę danych, czyli kolejność bitów. Może zgłaszać "Mam mapę bitową" "lub mam jakiś tekst", ale nie może określić urządzeń docelowych, dla których składają się dane, które widoki lub aspekty same dane mogą dostarczyć lub które nośniki magazynu najlepiej nadają się do jego transferu. Na przykład nie można zgłosić komunikatu "Mam ciąg tekstu, który jest przechowywany w pamięci globalnej i sformatowany do prezentacji na ekranie lub na drukarce" lub "Mam mapę bitową szkicu miniatur renderowaną dla drukarki z kropką o rozdzielczości 100 dpi i zapisaną jako plik dysku".

Po drugie, wszystkie transfery danych przy użyciu schowka są zwykle wykonywane za pośrednictwem pamięci globalnej. Użycie pamięci globalnej jest dość wydajne w przypadku małych ilości danych, ale strasznie nieefektywne dla dużych ilości, takich jak obiekt multimedialny o rozmiarze 20 MB. Pamięć globalna działa wolno w przypadku dużego obiektu danych, którego rozmiar wymaga znacznej zamiany na pamięć wirtualną na dysku. W przypadkach, gdy wymieniane dane będą znajdować się głównie na dysku mimo to, wymuszanie przez to wąskie gardło pamięci wirtualnej jest wysoce nieefektywne. Lepszym sposobem byłoby całkowite pominięcie pamięci globalnej i po prostu przeniesienie danych bezpośrednio na dysk.

Aby złagodzić te problemy, com udostępnia dwie struktury danych: FORMATETC i STGMEDIUM. Aby uzyskać więcej informacji, zobacz następujące tematy:

  • struktury FORMATETC
  • struktury STGMEDIUM

transferu danych