Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Muitos protocolos de Internet de camada de aplicação são baseados na troca de mensagens em um formato simples e flexível chamado Multipurpose Internet Mail Extensions (MIME). Embora o MIME tenha se originado como um padrão para o intercâmbio de mensagens de correio eletrônico, ele é usado hoje por uma ampla variedade de aplicativos para especificar formatos de dados mutuamente compreendidos como tipos MIME, ou mídia. O processo é chamado negociação do tipo mídia.
Tipos de mídia são cadeias de caracteres simples que denotam um tipo e subtipo (como "texto/simples" ou "texto/HTML"). Eles são usados para rotular dados ou qualificar uma solicitação. Um navegador da Web, por exemplo, como parte de uma solicitação HTTP de dados ou solicitação de informações, especifica que está solicitando tipos de mídia "image/gif" ou "image/jpeg", aos quais um servidor Web responde retornando o tipo de mídia apropriado e, se a chamada foi uma solicitação de dados, os próprios dados no formato solicitado.
A negociação de tipo de mídia geralmente é semelhante à forma como os aplicativos de área de trabalho existentes negociam com a área de transferência do sistema para determinar qual formato de dados colar quando um usuário escolhe Editar/Colar ou consulta formatos ao receber um ponteiro IDataObjectdurante uma operação de arrastar e soltar. A diferença sutil na negociação do tipo mídia HTTP é que o cliente não sabe com antecedência quais formatos o servidor tem disponíveis. Portanto, o cliente especifica antecipadamente os tipos de mídia que suporta, em ordem de maior fidelidade, e o servidor responde com o melhor formato disponível.
Os monikers de URL suportam a negociação do tipo mídia como uma forma de clientes e servidores da Internet concordarem com os formatos a serem usados ao baixar dados em operaçõesBindToStorage. Para dar suporte à negociação do tipo mídia, um cliente implementa a interfaceIEnumFORMATETCe chama a funçãoRegisterFormatEnumerator para registrá-la com o contexto de ligação. O enumerador de formato lista os formatos que o cliente pode aceitar. Um moniker de URL traduz esses formatos em tipos de mídia ao vincular a URLs HTTP.
Os possíveis tipos de mídia solicitados pelo cliente são representados para monikers de URL através de estruturas de FORMATETC disponíveis no IEnumFORMATETC enumerador registrado pelo chamador no contexto de ligação: Cada FORMATETC especifica um formato de área de transferência que identifica o tipo de mídia. Por exemplo, o fragmento de código a seguir especifica que o tipo de mídia é PostScript.
FORMATETC fmtetc;
fmtetc.cfFormat = RegisterClipboardFormat(CF_MIME_POSTSCRIPT);
. . .
Um cliente pode definir o formato da área de transferência para o tipo de mídia especial CF_NULL para indicar que o tipo de mídia padrão do recurso apontado pela URL deve ser recuperado. Este formato é geralmente o último em que o cliente está interessado. Quando nenhum enumerador é registrado com o contexto de ligação, um moniker de URL funciona como se um enumerador contendo um único FORMATETC com cfFormat=CF_NULL estivesse disponível, baixando automaticamente o tipo de mídia padrão.
Seja qual for o tipo de mídia a ser usado, o cliente é notificado da escolha por meio do argumento pformatetc em seu método IBindStatusCallback::OnDataAvailable . O retorno de chamada ocorre dentro do contexto da chamada do cliente para BindToStorage.
Observação
Se o conteúdo recebido for de um tipo de mídia não reconhecido, o cliente chamará automaticamente RegisterMediaTypes para registrar o novo tipo.
Tópicos relacionados