Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
4.2 KiB

  1. /*++
  2. Copyright (C) 1996-2001 Microsoft Corporation
  3. Module Name:
  4. Abstract:
  5. History:
  6. --*/
  7. #ifndef __MSMQCOMN_H__
  8. #define __MSMQCOMN_H__
  9. /**************************************************************************
  10. MSMQ Function Typedefs
  11. ***************************************************************************/
  12. typedef HRESULT (APIENTRY *PMQCreateQueue)( PSECURITY_DESCRIPTOR,
  13. MQQUEUEPROPS*,
  14. LPWSTR,
  15. DWORD* );
  16. typedef HRESULT (APIENTRY *PMQOpenQueue)( LPWSTR,
  17. DWORD,
  18. DWORD,
  19. QUEUEHANDLE* );
  20. typedef HRESULT (APIENTRY *PMQDeleteQueue)( LPWSTR );
  21. typedef HRESULT (APIENTRY *PMQFreeMemory)( PVOID );
  22. typedef HRESULT (APIENTRY *PMQSendMessage)( QUEUEHANDLE,
  23. MQMSGPROPS*,
  24. ITransaction* );
  25. typedef HRESULT (APIENTRY *PMQReceiveMessage)( QUEUEHANDLE,
  26. DWORD,
  27. DWORD,
  28. MQMSGPROPS*,
  29. LPOVERLAPPED,
  30. PMQRECEIVECALLBACK,
  31. HANDLE,
  32. ITransaction* );
  33. typedef HRESULT (APIENTRY *PMQCloseQueue)( QUEUEHANDLE );
  34. typedef HRESULT (APIENTRY *PMQPathNameToFormatName)( LPCWSTR, LPWSTR, DWORD* );
  35. typedef HRESULT (APIENTRY *PMQCreateCursor)( QUEUEHANDLE hQueue,
  36. PHANDLE phCursor );
  37. typedef HRESULT (APIENTRY *PMQCloseCursor)( HANDLE hCursor );
  38. typedef HRESULT (APIENTRY *PMQGetSecurityContext)( PVOID lpCertBuffer,
  39. DWORD dwCertBufferLength,
  40. HANDLE* hSecurityContext );
  41. typedef void (APIENTRY *PMQFreeSecurityContext)( HANDLE hSecurityContext );
  42. typedef HRESULT (APIENTRY *PMQRegisterCertificate)( DWORD dwFlags,
  43. PVOID lpCertBuffer,
  44. DWORD dwCertBufferLen );
  45. typedef HRESULT (APIENTRY *PMQMgmtGetInfo)( LPCWSTR pMachineName,
  46. LPCWSTR pObjectName,
  47. MQMGMTPROPS* pMgmtProps );
  48. typedef HRESULT (APIENTRY *PMQGetQueueProperties)( LPCWSTR lpwcsFormatName,
  49. MQQUEUEPROPS* pQueueProps );
  50. typedef HRESULT (APIENTRY *PMQGetPrivateComputerInformation)( LPCWSTR,
  51. MQPRIVATEPROPS*);
  52. /************************************************************************
  53. CMsmqApi
  54. *************************************************************************/
  55. #define FUNCPTR(FUNC) P ## FUNC m_fp ## FUNC;
  56. class CMsmqApi
  57. {
  58. HMODULE m_hModule;
  59. public:
  60. CMsmqApi() { ZeroMemory( this, sizeof(CMsmqApi) ); }
  61. ~CMsmqApi();
  62. HRESULT Initialize();
  63. FUNCPTR(MQGetQueueProperties)
  64. FUNCPTR(MQCreateQueue)
  65. FUNCPTR(MQOpenQueue)
  66. FUNCPTR(MQDeleteQueue)
  67. FUNCPTR(MQFreeMemory)
  68. FUNCPTR(MQSendMessage)
  69. FUNCPTR(MQReceiveMessage)
  70. FUNCPTR(MQCloseQueue)
  71. FUNCPTR(MQPathNameToFormatName)
  72. FUNCPTR(MQCreateCursor)
  73. FUNCPTR(MQCloseCursor)
  74. FUNCPTR(MQGetSecurityContext)
  75. FUNCPTR(MQFreeSecurityContext)
  76. FUNCPTR(MQRegisterCertificate)
  77. FUNCPTR(MQGetPrivateComputerInformation)
  78. FUNCPTR(MQMgmtGetInfo)
  79. };
  80. /**************************************************************************
  81. Common MSMQ Util Functions
  82. ***************************************************************************/
  83. #include <wstring.h>
  84. HRESULT MqClassToWmiRes( DWORD dwClass );
  85. HRESULT MqResToWmiRes( HRESULT hr, HRESULT hrDefault = S_OK );
  86. HRESULT IsMsmqOnline( CMsmqApi& rApi );
  87. HRESULT IsMsmqWorkgroup( CMsmqApi& rApi );
  88. HRESULT EnsureMsmqService( CMsmqApi& rApi );
  89. HRESULT NormalizeQueueName( CMsmqApi&,LPCWSTR wszEndpoint,WString& rwsFormat);
  90. #endif // __MSMQQCOMN_H__