IMsgServiceAdmin::AdminProviders fails with 0x80010104

  • Thread starter Thread starter Lars Iversen
  • Start date Start date
L

Lars Iversen

Hi.

I take part in developing an exchange client extension for Outlook
based on extended MAPI. The application extends Outlook with commands,
a new message class and a form, uses advise sinks to listen to folders
for events, adds and removes message stores from the profile, etc. I
use VS2005 on different platforms.

Inside my implementation of IExchExt::Install, the extension accesses
the (outlook) profile, and adds and removes message stores as described
in http://support.microsoft.com/?kbid=171636. No problem, works fine.

However, when I try to access the profile in much the same way (just
for reading purposes) from my implementation of
IPersistMessage::InitNew, it fails. More specifically,
IMsgServiceAdmin::AdminProviders returns 0x80010104 (RPC could not call
the server or could not return the result of calling the server). I
have included pseudo code below. Any clue of what is going wrong?

Regards,
Lars

STDMETHODIMP MyForm::InitNew(IMAPIMessageSite* site, IMessage*)
{
CComPtr<IMAPISession> session;
site->GetSession(&session.p);
CComPtr<IMsgServiceAdmin> messageServiceAdministration;
session->AdminServices(0, &messageServiceAdministration.p);
CComPtr<IMAPITable> table;
messageServiceAdministration.GetMessageServiceTable(0, &table.p);
MAPIUID uid = ...; // the uid in the table with PR_SERVICE_NAME =
'MSEMS'
CComPtr<IProviderAdmin> providerAdmin;
HRESULT hr = messageServiceAdministration->AdminProviders(&uid, 0,
&providerAdmin.p); // hr has the value 0x80010104
 
Try to move the implementation to a dll to make sure it is loaded in-proc:
IMAPISession has a few bugs when it comes to marshalling - profile sections
and ACLs are the two major problems (to be fixed in Outlook 2007).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
Thanks for the answer. Moving it to an in-proc dll is probably not an
option right now, but it is nice to know that it will be fixed in the
next version of Outlook.

Nice having you around!

Regards,
Lars
 
I obviously don't know how your code is structured, but you can combine the
ECE and the custom form implementation in the same dll. One less executable,
plus you can easily make the ECE and the MAPI form parts to interact with
each other through the global variables.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
That is clearly the way I want to go, but the product I am developing
is more than 10 years old, thus it is not a trivial task. I hope to get
there and to get rid of a lot of problems related to having several
processes.
 
Back
Top