Compartilhar via


Formatos de dados e mídia de transferência

A maioria das plataformas, incluindo o Windows, define um protocolo padrão para transferir dados entre aplicativos, com base em um conjunto de funções chamado área de transferência. Os aplicativos que usam essas funções podem compartilhar dados mesmo que seus formatos de dados nativos sejam extremamente diferentes. Geralmente, essas áreas de transferência têm duas deficiências significativas que o COM superou.

Primeiro, as descrições de dados usam apenas um identificador de formato, como o único identificador de formato de área de transferência de 16 bits no Windows, o que significa que a área de transferência só pode descrever a estrutura de seus dados, ou seja, a ordenação dos bits. Ele pode relatar"Eu tenho um bitmap" "ou tenho algum texto", mas não pode especificar os dispositivos de destino para os quais os dados são compostos, quais exibições ou aspectos de si mesmos os dados podem fornecer ou quais mídias de armazenamento são mais adequadas para sua transferência. Por exemplo, ele não pode relatar: "Tenho uma cadeia de caracteres de texto armazenada na memória global e formatada para apresentação na tela ou em uma impressora" ou "Tenho um bitmap de esboço de miniatura renderizado para uma impressora de matriz de ponto de 100 dpi e armazenado como um arquivo de disco".

Em segundo lugar, todas as transferências de dados usando a área de transferência geralmente ocorrem por meio da memória global. O uso da memória global é razoavelmente eficiente para pequenas quantidades de dados, mas horrivelmente ineficiente para grandes quantidades, como um objeto multimídia de 20 MB. A memória global é lenta para um objeto de dados grande, cujo tamanho requer uma troca considerável pela memória virtual no disco. Nos casos em que os dados que estão sendo trocados residirão principalmente em disco de qualquer maneira, forçá-los por esse gargalo de memória virtual é altamente ineficiente. Uma maneira melhor ignoraria totalmente a memória global e simplesmente transferiria os dados diretamente para o disco.

Para aliviar esses problemas, o COM fornece duas estruturas de dados: FORMATETC e STGMEDIUM. Para obter mais informações, consulte os seguintes tópicos:

de Transferência de Dados