Friday, September 23, 2005

MSLMS Unicode

Recently i've tried to discover why MSLMS sample does not work when built as unicode. Anyway I know that only Outlook 2003 has full support of UNICODE but after adding service to the profile client can't open store. Call to IMAPISession::OpenMsgStore always fails returning MAPI_E_NOT_FOUND. I started digging. Checked every line of configuration code. Everything seemed to be fine. After I'd read thoroughly the error message Outlook gave me after trying to open store I noticed that message service name was truncated to only symbol 'M'. So I decided that somewhere UNICODE string was being passed instead of ANSI. Rechecking code I found that call to WrapStoreEntryID was being passed UNICODE string while flags report that string is ANSI. After fixing that and readding store to the profile solved the problem. So it seems that MAPI uses somehow dll name that passed to WrapStoreEntryID. That dll name present inside wrapped EntryID. Testing UNICODE build i've dicovered another memory corruption bug and fixed it. Anyway there are still problems with file database. In particular when store works as default store. There are several instances of provider are loaded and several threads use these instances. And sometimes cached binary tree nodes are being freed while some streams are still opened and have references to freed nodes. When streams are being released memory corruption occurs. I've uploaded the whole updated MSLMS sample to rapidshare. I haven't tested this build with Outlook XP. Since Outlook XP not fully supports UNICODE there still some places to be fixed. All places where format of passes or requested strings is determined via passes flags. F.e. IMAPIProp::GetLastError and IMsgStore::GetReceiveFolder. 16.11.2005 Changes: Fixed some store configuration issues for unicode build (Outlook XP and Outlook 2003) Fixed bug in store file storage (small memory corruption)

Wednesday, September 14, 2005

Outlooks Internal iCal <=> MAPI convertor

Just working on investigation on this convertor.
Added initial spying of this convertion to MAPISpy.
Also fixed some issues with named properties.
Started creating GUI interface for Settings of MAPISpy.

So in some time this should be available.

Also i'm going to create another article about chaining FreeBusy providers and using them by clients (including build-in providers for Exchange and Internet FreeBusy(SMTP)).