XADM: "MapiInitialize" Does Not Handle Different Threading Models; the Fix Requires Exchange 2000 SP2

Article translations Article translations
Article ID: 313094 - View products that this article applies to.
This article was previously published under Q313094
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all


Even if the MAPI_NO_COINIT flag is passed, MapiInitialize() may not handle different threading models correctly if Component Object Model (COM) has already been initialized.


This problem may occur if MapiInitialize() calls CoInitialize() regardless of whether or not the flag is passed, and then calls CoUninitialize if the flag was set, without first checking to see if CoInitialize initially failed. This behavior may cause CoUninitialize to be called too many times.


To resolve this problem, obtain the latest service pack for Microsoft Exchange 2000 Server. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
301378 XGEN: How to Obtain the Latest Exchange 2000 Server Service Pack
The English version of this fix should have the following file attributes or later:

Component: Messaging Application Programming Interface (MAPI)

Collapse this tableExpand this table
File nameVersion

NOTE: Because of file dependencies, this update requires Microsoft Exchange 2000 Server Service Pack 2.


Microsoft has confirmed that this is a problem in Microsoft Exchange 2000 Server. This problem was first corrected in Microsoft Exchange 2000 Server Service Pack 3.


Article ID: 313094 - Last Review: October 24, 2013 - Revision: 2.3
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Conferencing Server
kbnosurvey kbarchive kbbug kbexchange2000presp3fix kbexchange2000sp3fix kbfix KB313094

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com