Создание IDL для преобразования MAPI-MIME
Вопрос
Я пытаюсь создать IDL для интерфейса IConverterSession, и меня смущает определение МИМЕТОМАПИ метод.Он определяет LPMESSAGE pmsg
параметр как [out], однако в комментариях указано, что это указатель на сообщение MAPI, которое необходимо загрузить.
Мне неясно, выделяют ли функции объект сообщения MAPI и устанавливают указатель, и в этом случае не должен ли он быть указателем на указатель MESSAGE?ИЛИ ожидается, что вызывающий код уже создал экземпляр объекта сообщения, и в этом случае почему помечен [out], а не [in]?
В конечном итоге этот интерфейс должен быть использован из кода VB6, поэтому он должен быть либо [in], либо [in, out], но мне нужно знать, находится ли в IDL, который я использовал: -
[in] IMessage pmsg*
ИЛИ
[in, out] IMessage pmsg**
Решение
Я думаю, что в этом случае документация вводит в заблуждение, когда помечает параметр как [out].Вы должны передать методу действительный LPMESSAGE, поэтому он не является двойным указателем.Поэтому я бы выбрал [in] в вашем определении idl.
Другие советы
См. MAPIMime.h из источника MFCMapi (http://mfcmapi.codeplex.com/) в качестве окончательного источника.