PROPID_Q_PRIV_LEVEL

 

Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista

(Optional.) The PROPID_Q_PRIV_LEVEL property specifies the privacy level that is required by the queue. The privacy level determines how the queue handles encrypted messages.

Property ID

PROPID_Q_PRIV_LEVEL

Type Indicator

VT_UI4

MQPROPVARIANT Field

ulVal

Property Value

This property can be set to one of the following values:

MQ_PRIV_LEVEL_NONE

The queue accepts only non-private (clear) messages.

MQ_PRIV_LEVEL_BODY

The queue accepts only private (encrypted) messages.

MQ_PRIV_LEVEL_OPTIONAL

The default. The queue does not enforce privacy. It accepts private (encrypted) messages and non-private (clear) messages.

Remarks

The application can set the privacy level of queues and messages. If the privacy level of the message (PROPID_M_PRIV_LEVEL) does not match the privacy level of the queue, the queue rejects the message. In addition, if the sending application requested a negative acknowledgment message when it sent the message, MQMSG_CLASS_BAD_ENCRYPTION will be returned to the sending application to indicate that the message was rejected.

To set the privacy level when creating the queue, specify PROPID_Q_PRIV_LEVEL in the MQQUEUEPROPS structure and call MQCreateQueue.

To change the privacy level of a queue, specify PROPID_Q_PRIV_LEVEL in the MQQUEUEPROPS structure and call MQSetQueueProperties. When changing the privacy level of the queue, the new setting affects only arriving messages; it does not affect messages already in the queue.

To retrieve the privacy level of a queue, specify PROPID_Q_PRIV_LEVEL in the MQQUEUEPROPS structure, call MQGetQueueProperties, and examine its returned value.

When retrieving the privacy level required by the queue, the type indicator can be set to VT_UI4 or VT_NULL. If you set the type indicator equal to VT_NULL, Message Queuing automatically changes the type indicator to VT_UI4 during the function call.

Private messages can be encrypted by the sending queue manager or by the sending application.

For information on See
Having Message Queuing encrypt messages Message Queuing-Encrypted Messages
Having your application encrypt messages Application-Encrypted Messages
Setting and retrieving the privacy level of a queue when you are using COM components MSMQQueueInfo.PrivLevel

Equivalent COM Property

When using COM components, the privacy level of the queue can be set and retrieved using the MSMQQueueInfo.PrivLevel property.

Example Code

The following code fragments show how PROPID_Q_PRIV_LEVEL is specified in arrays that can be used to initialize an MQQUEUEPROPS structure for setting and retrieving the privacy level of the queue.

To Set the Privacy Level

DWORD dwPrivacyLevel = MQ_RIV_LEVEL_BODY;  
aQueuePropID[i] = PROPID_Q_PRIV_LEVEL;        // Property identifier  
aQueuePropVar[i].vt = VT_UI4;                 // Type indicator  
aQueuePropVar[i].ulVal = dwPrivacyLevel;      // Privacy level of queue  
i++;  

To Retrieve the Privacy Level

aQueuePropID[i] = PROPID_Q_PRIV_LEVEL;       // Property identifier  
aQueuePropVar[i].vt = VT_NULL;               // Type indicator  
i++;  

The following examples are included in Using Message Queuing.

For an example of See
Requesting encryption when sending messages C/C++ Code Example: Requesting Encryption
Creating a queue that accepts only private messages C/C++ Code Example: Enforcing Encryption
Setting and retrieving the privacy level of the queue C/C++ Code Example: Setting PROPID_Q_PRIV_LEVEL

 C/C++ Code Example: Retrieving PROPID_Q_PRIV_LEVEL

See Also

Queue Properties
MQCreateQueue
MQGetQueueProperties
MQQUEUEPROPS
MQSetQueueProperties