C++ COM Code Example: Creating a Private Queue (Windows Embedded CE 6.0)

1/6/2010

The following code example creates a private queue on the local machine.

If a queue with the same pathname exists, an error message is displayed and no queue is created.

//
// MSMQ COM sample using smart pointer
//
// following sample code creates a private queue named "Q1"
//

#include <atlbase.h>
#include <mqoai.h>
// should include mqoa.lib to the projet
// mqoa.lib is under Public\SERVERS\OAK\LIB\X86\RETAIL
//#import "mqoa.dll" no_namespace   // not supported


HRESULT CreateQueueQ1()
{
   CComQIPtr<IMSMQQueueInfo, &IID_IMSMQQueueInfo> ipQueueInfo;
   HRESULT hr = S_OK;
// hr = ipQueueInfo.CoCreateInstance(CLSID_MSMQQueueInfo);  // this form is not supported
   hr = CoCreateInstance(
         CLSID_MSMQQueueInfo,
         NULL,
         CLSCTX_SERVER,
         IID_IMSMQQueueInfo,
         (void**)(&ipQueueInfo.p));
   if(hr != S_OK)
      return hr;

   hr = ipQueueInfo->put_PathName(L".\\private$\\Q1");
   if(hr != S_OK)
      return hr;

   VARIANT vtFalse;
   VariantInit(&vtFalse);
   vtFalse.vt = VT_BOOL;
   vtFalse.boolVal = FALSE;
   hr = ipQueueInfo->Create(&vtFalse, &vtFalse);
   return hr;
}


int main(int argc, WCHAR* argv[])
{
   HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
   if(hr == S_OK)
   {
      CreateQueueQ1();
      CoUninitialize();
   }
   return 0;
}

See Also

Concepts

Creating a Private Queue (COM)
MSMQ COM Support
Using the COM Components
MSMQ Security

Other Resources

Message Queuing