title: MSMQ c++ receive message problem
body: <p>I am trying to read messages from a MSMQ queue in c++.
  The queue is successfully open, but I am having problems reading any message from it.</p>
  
  <p>This code sample is taken from MSDN and modified in a few places.
  Here is the code:</p>
  
  <pre><code>// Define the required constants and variables.
  const int NUMBEROFPROPERTIES = 5;
  DWORD cPropId = 0;
  HRESULT hr = MQ_OK;                                 // Return code
  ULONG ulBufferSize = 256;
  
  // Define an MQMSGPROPS structure.
  MQMSGPROPS msgprops;
  MSGPROPID aMsgPropId[NUMBEROFPROPERTIES];
  MQPROPVARIANT aMsgPropVar[NUMBEROFPROPERTIES];
  HRESULT aMsgStatus[NUMBEROFPROPERTIES];
  
  // Specify the message properties to be retrieved.
  aMsgPropId[cPropId] = PROPID_M_LABEL_LEN;           // Property ID
  aMsgPropVar[cPropId].vt = VT_UI4;                   // Type indicator
  aMsgPropVar[cPropId].ulVal = MQ_MAX_MSG_LABEL_LEN;  // Length of label
  cPropId++;
  
  WCHAR wszLabelBuffer[MQ_MAX_MSG_LABEL_LEN];         // Label buffer
  aMsgPropId[cPropId] = PROPID_M_LABEL;               // Property ID
  aMsgPropVar[cPropId].vt = VT_LPWSTR;                // Type indicator
  aMsgPropVar[cPropId].pwszVal = wszLabelBuffer;      // Label buffer
  cPropId++;
  
  UCHAR * pucBodyBuffer = NULL;
  pucBodyBuffer = (UCHAR*)malloc(ulBufferSize); 
  if (pucBodyBuffer == NULL)
  {
      return MQ_ERROR_INSUFFICIENT_RESOURCES;
  }
  memset(pucBodyBuffer, 0, ulBufferSize);
  aMsgPropId[cPropId] = PROPID_M_BODY_SIZE;           // Property ID
  aMsgPropVar[cPropId].vt = VT_NULL;                  // Type indicator
  cPropId++;
  
  aMsgPropId[cPropId] = PROPID_M_BODY;                // Property ID
  aMsgPropVar[cPropId].vt = VT_VECTOR | VT_UI1;       // Type indicator
  aMsgPropVar[cPropId].caub.pElems = (UCHAR*)pucBodyBuffer;  // Body buffer
  aMsgPropVar[cPropId].caub.cElems = ulBufferSize;    // Buffer size
  cPropId++;
  
  aMsgPropId[cPropId] = PROPID_M_BODY_TYPE;           // Property ID
  aMsgPropVar[cPropId].vt = VT_NULL;                  // Type indicator
  cPropId++;
  
  
  // Initialize the MQMSGPROPS structure.
  msgprops.cProp = cPropId;                           // Number of message properties
  msgprops.aPropID = aMsgPropId;                      // IDs of the message properties
  msgprops.aPropVar = aMsgPropVar;                    // Values of the message properties
  msgprops.aStatus = aMsgStatus;                      // Error reports
  
      // HERE IS THE ERROR
  hr = MQReceiveMessage(
                        this-&gt;readHandle,                     // Queue handle
                          // Max time to (msec) to receive the message
                          // wait soooooo much 
                        INFINITE,                       
                        MQ_ACTION_RECEIVE          // Receive action
                        &amp;msgprops,                  // Message property structure
                        NULL,                       // No OVERLAPPED structure
                        NULL,                       // No callback function
                        NULL,                       // No cursor handle
                        MQ_NO_TRANSACTION           // Not in a transaction
                        );
  
  // log reading operation result
  f&lt;&lt;"log receive operation"&lt;&lt;endl;
  f&lt;&lt;hex&lt;&lt;hr&lt;&lt;endl;
  f.close();
  
  if (hr == MQ_ERROR_BUFFER_OVERFLOW)
  {
      //MessageBox(NULL, TEXT("buffer overflow"), TEXT("Message"), MB_OK);
  
      ulBufferSize = aMsgPropVar[2].ulVal*sizeof(UCHAR);
      pucBodyBuffer = (UCHAR*)realloc(pucBodyBuffer, ulBufferSize);
      if (pucBodyBuffer == NULL)
      {
      return MQ_ERROR_INSUFFICIENT_RESOURCES;
      }
      memset(pucBodyBuffer, 0, ulBufferSize);
      aMsgPropVar[3].caub.pElems = (UCHAR*)pucBodyBuffer;
      aMsgPropVar[3].caub.cElems = ulBufferSize;
  }
  </code></pre>
  
  <p>At the instruction "MQReceiveMessage" i get "MQ_ERROR_ILLEGAL_PROPERTY_VALUE" error code.</p>
  
  <p>Can anyone look over my code and tell me what is wrong, what property is illegal?</p>
  
  <p>Thanks,</p>