/*++ Copyright (C) 1996-2001 Microsoft Corporation Module Name: Abstract: History: --*/ #ifndef __MSMQCOMN_H__ #define __MSMQCOMN_H__ /************************************************************************** MSMQ Function Typedefs ***************************************************************************/ typedef HRESULT (APIENTRY *PMQCreateQueue)( PSECURITY_DESCRIPTOR, MQQUEUEPROPS*, LPWSTR, DWORD* ); typedef HRESULT (APIENTRY *PMQOpenQueue)( LPWSTR, DWORD, DWORD, QUEUEHANDLE* ); typedef HRESULT (APIENTRY *PMQDeleteQueue)( LPWSTR ); typedef HRESULT (APIENTRY *PMQFreeMemory)( PVOID ); typedef HRESULT (APIENTRY *PMQSendMessage)( QUEUEHANDLE, MQMSGPROPS*, ITransaction* ); typedef HRESULT (APIENTRY *PMQReceiveMessage)( QUEUEHANDLE, DWORD, DWORD, MQMSGPROPS*, LPOVERLAPPED, PMQRECEIVECALLBACK, HANDLE, ITransaction* ); typedef HRESULT (APIENTRY *PMQCloseQueue)( QUEUEHANDLE ); typedef HRESULT (APIENTRY *PMQPathNameToFormatName)( LPCWSTR, LPWSTR, DWORD* ); typedef HRESULT (APIENTRY *PMQCreateCursor)( QUEUEHANDLE hQueue, PHANDLE phCursor ); typedef HRESULT (APIENTRY *PMQCloseCursor)( HANDLE hCursor ); typedef HRESULT (APIENTRY *PMQGetSecurityContext)( PVOID lpCertBuffer, DWORD dwCertBufferLength, HANDLE* hSecurityContext ); typedef void (APIENTRY *PMQFreeSecurityContext)( HANDLE hSecurityContext ); typedef HRESULT (APIENTRY *PMQRegisterCertificate)( DWORD dwFlags, PVOID lpCertBuffer, DWORD dwCertBufferLen ); typedef HRESULT (APIENTRY *PMQMgmtGetInfo)( LPCWSTR pMachineName, LPCWSTR pObjectName, MQMGMTPROPS* pMgmtProps ); typedef HRESULT (APIENTRY *PMQGetQueueProperties)( LPCWSTR lpwcsFormatName, MQQUEUEPROPS* pQueueProps ); typedef HRESULT (APIENTRY *PMQGetPrivateComputerInformation)( LPCWSTR, MQPRIVATEPROPS*); /************************************************************************ CMsmqApi *************************************************************************/ #define FUNCPTR(FUNC) P ## FUNC m_fp ## FUNC; class CMsmqApi { HMODULE m_hModule; public: CMsmqApi() { ZeroMemory( this, sizeof(CMsmqApi) ); } ~CMsmqApi(); HRESULT Initialize(); FUNCPTR(MQGetQueueProperties) FUNCPTR(MQCreateQueue) FUNCPTR(MQOpenQueue) FUNCPTR(MQDeleteQueue) FUNCPTR(MQFreeMemory) FUNCPTR(MQSendMessage) FUNCPTR(MQReceiveMessage) FUNCPTR(MQCloseQueue) FUNCPTR(MQPathNameToFormatName) FUNCPTR(MQCreateCursor) FUNCPTR(MQCloseCursor) FUNCPTR(MQGetSecurityContext) FUNCPTR(MQFreeSecurityContext) FUNCPTR(MQRegisterCertificate) FUNCPTR(MQGetPrivateComputerInformation) FUNCPTR(MQMgmtGetInfo) }; /************************************************************************** Common MSMQ Util Functions ***************************************************************************/ #include HRESULT MqClassToWmiRes( DWORD dwClass ); HRESULT MqResToWmiRes( HRESULT hr, HRESULT hrDefault = S_OK ); HRESULT IsMsmqOnline( CMsmqApi& rApi ); HRESULT IsMsmqWorkgroup( CMsmqApi& rApi ); HRESULT EnsureMsmqService( CMsmqApi& rApi ); HRESULT NormalizeQueueName( CMsmqApi&,LPCWSTR wszEndpoint,WString& rwsFormat); #endif // __MSMQQCOMN_H__