Criando IDL para a conversão MAPI-MIME
Pergunta
Eu estou tentando criar o IDL para a interface IConverterSession e estou confuso com a definição do método MIMETOMAPI . Ele especifica o parâmetro LPMESSAGE pmsg
como [out] ainda os comentários afirmar a sua o ponteiro para a mensagem MAPI a ser carregado.
Não está claro para mim se as funções aloca o objeto de mensagem MAPI e define o ponteiro caso em que não deveria ser um ponteiro para um ponteiro de mensagem? OR é o código de chamada deverá ter instanciado o objeto de mensagem já nesse caso porque é marcado [out] e não [in]?
Utlitmately esta interface é para ser consumido a partir do código VB6 por isso terá que ser [em] ou [in, out] Mas eu preciso saber se no IDL eu usei: -
[in] IMessage pmsg*
ou
[in, out] IMessage pmsg**
Solução
Eu acho que, neste caso, a documentação é enganosa quando ele marca o parâmetro como [out]. Você tem que passar por um LPMESSAGE válida para o método, e é por isso que não é um ponteiro de casal. Então eu iria com [in] na sua definição IDL.
Outras dicas
Veja MAPIMime.h de fonte MFCMapi (http://mfcmapi.codeplex.com/) como uma fonte definitiva.