Error code 0xc00e0030 or error code 0xc00e002f may be logged in the application log when you try to record Queued Components messages in a COM+ application (259563)



The information in this article applies to:

  • Microsoft COM+ 1.0
  • Microsoft COM+ 1.5

This article was previously published under Q259563

SYMPTOMS

When you try to record Queued Components messages, the following events may be logged in the application log: Event Type: Error
Event Source: COM+
Event Category: QC MSMQ Runtime
Event ID: 4216
Date: 11/30/1999
Time: 17:42:21 PM
User: N/A C
Computer: Computer Name
Description: An unexpected error was returned by the MSMQ API function indicated. The following error message was retrieved from MSMQ.
MQGetSecurityContext : A cryptographic function has failed.

Server Application ID: {4657228D-FBE1-11D0-995D-00C04FD919C1}
Server Application Name: IIS Out-Of-Process Pooled Applications
Error Code = 0xc00e0030 :
COM+ Services Internals Information:
File: .\msmqrt.cpp, Line: 829 Event Type: Error
Event Source: COM+
Event Category: QC Listener
Event ID: 4216
Date: 11/30/1999
Time: 17:42:21 PM
User: N/A
Computer: Computer Name
Description: An unexpected error was returned by the MSMQ API function indicated. The following error message was retrieved from MSMQ.
MQSendMessage : The internal Message Queuing certificate for the user does not exist.

Server Application ID: {4657228D-FBE1-11D0-995D-00C04FD919C1}
Server Application Name: DemoShip
Error Code = 0xc00e002f :
COM+ Services Internals Information:
File: .\lqueretry.cpp, Line: 179 Event Type: Error
Event Source: COM+
Event Category: (101)
Event ID: 4811
Date: Date
Time: Time
User: N/A
Computer: Computer Name
Description: An unexpected error was returned by Message Queuing API indicated. Unable to retrieve the associated error message text. Message Queuing API return values are defined in Platform SDK file MQ.H.MQSendMessage

Server Application ID: {12345678-1234-1234-1234-123456789ABC}
Server Application Instance ID: {12345678-1234-1234-1234-123456789ABC}
Server Application Name: COM+ Sample Application
Error Code = 0xc00e0030 :
COM+ Services Internals Information:
File: c:\srvrtm\com\complus\src\comsvcs\qc\recorder\channelmanager.cpp, Line: 298

CAUSE

The Queued Components recorder is trying to load the Microsoft Message Queuing (also known as MSMQ) security context to send authenticated messages. Message Queuing cannot access the identity's certificates either because the user profile of the sender identity is not loaded, or because the Message Queuing certificate is corrupted or missing.

WORKAROUND

There are several ways to work around this problem:
  • You can make a Microsoft Windows 2000-based or Microsoft Windows XP-based computer load a user profile for a particular identity by giving that identity to a service.
  • You can use Microsoft Visual C++ and Microsoft Active Template Library (ATL) to create a simple service.
  • On Microsoft Windows NT, you can use the Instrsrv.exe and Srvany.exe utilities to create a user-defined service. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

    137890 How to create a user-defined service

  • If you are sure that the user profile is loaded and that certificates should be available, renew the internal certificates of Message Queuing from the Message Queuing application in Control Panel.

MORE INFORMATION

These errors may be logged even if a service is used to load the required profile if the Microsoft COM+ application is started before the service that loads the profile is started. Message Queuing uses the RegOpenCurrentUser API. The RegOpenCurrentUser API will use the default user profile when the user profile is not loaded.

For more information about the RegOpenCurrentUser API, visit the following Microsoft Developer Network (MSDN) Web site:To work around this problem, use the RegDisablePredefinedCache API in the Microsoft Component Object Model (COM) application as early in the code as possible. When the predefined cache is disabled, calls to find the Message Queuing certificate in the user profile will use the HKEY_USERS\<SID> registry key instead of the HKEY_CURRENT_USER registry key.

If the certificate information for the user cannot be found, information that resembles the following information may be logged in the Msmq.log file:
[2]1364.18a0 03/22/2006-18:58:42.954 [certifct CMQSigCertStore::_Open] ERROR:Failed to open user certificate store in registry (Software\Microsoft\MSMQ\CertStore). 2(ERROR_FILE_NOT_FOUND) 
[2]1364.18a0 03/22/2006-18:58:42.954 1007 [LogMsgHR] ERROR: certifct/mqcert 90 HRESULT: 0xC00E0070 
[2]1364.18a0 03/22/2006-18:58:42.954 [certifct CMQSigCertStore::Release] Info:Releasing CertStore, g_cOpenCertStore = 0 
[2]1364.18a0 03/22/2006-18:58:42.954 [rt RTOpenInternalCertStore] ERROR:Failed to open user certificate store. HRESULT=C00E0070 
[2]1364.18a0 03/22/2006-18:58:42.954 [rt RTGetInternalCert] ERROR:Failed to open internal certificate store. HRESULT=C00E0070 
[2]1364.18a0 03/22/2006-18:58:42.954 2041 [LogMsgHR] ERROR: rt/rtcert 140 HRESULT: 0xC00E002F 
[2]1364.18a0 03/22/2006-18:58:42.954 [rt ShouldSignMessage] Info:RT: ShouldSignMessage() = true 
[2]1364.18a0 03/22/2006-18:58:42.954 [rt HandleSignature] Info:RT: HandleSignature(), fProtocolSrmp = 0, fProtocolMsmq = 1 
[2]1364.18a0 03/22/2006-18:58:42.954 [rt CalcSignutureTypes] Info:RT: SignutureTypes(), MQMSG_AUTH_LEVEL_ALWAYS(read registry): ulAuthLevelMsmq = 2 
[2]1364.18a0 03/22/2006-18:58:42.954 2042 [LogMsgHR] ERROR: rt/message 164 HRESULT: 0xC00E0030
[2]1364.18a0 03/22/2006-18:58:42.954 [rt RTpSendMessage] ERROR:Failed to handle signature. HRESULT=C00E0030
Note The Msmq.log file is the log file for the MSMQ service. This file is located in the %WinDir%\Debug folder.

Modification Type:MajorLast Reviewed:5/9/2006
Keywords:kbComPlusQC kberrmsg kbprb kbSecurity KB259563