Partilhar via


MQSetQueueProperties

 

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

The MQSetQueueProperties function sets the properties of a specific queue.

HRESULT APIENTRY MQSetQueueProperties(  
  LPCWSTR lpwcsFormatName,    
  MQQUEUEPROPS * pQueueProps    
);  

Parameters

lpwcsFormatName

[in] Pointer to the format name string of the queue whose properties will be set. A public or private format name can be used to specify the queue. You can only use a direct format name to set the properties of a local private queue.

pQueueProps

[in] Pointer to the MQQUEUEPROPS structure that specifies the properties to be set.

On input, the cProp member of MQQUEUEPROPS specifies the number of properties to be set, the aPropID array specifies their property identifiers, and the aPropVar array indicates the new values of the specified properties.

On output, the optional aStatus array, if it was included in MQQUEUEPROPS, indicates the status of the properties.

Return Values

MQ_OK

Indicates success.

MQ_ERROR_ACCESS_DENIED (0xC00E0025)

The access rights for setting the properties of the queue are not allowed for the calling process. For a complete list of queue access rights, see Access Control.

To change the access rights of the queue, call MQSetQueueSecurity.

MQ_ERROR_ILLEGAL_FORMATNAME (0xC00E001E)

The lpwcsFormatName parameter specified an illegal format name.

MQ_ERROR_ILLEGAL_PROPERTY_VALUE (0xC00E0018)

An illegal property value is specified.

MQ_ERROR_INVALID_PARAMETER (0xC00E0006)

One of the IN parameters supplied by the operation is not valid.

MQ_ERROR_NO_DS (0xC00E0013)

A connection with the directory service cannot be established. Verify permissions for accessing the directory service.

MQ_ERROR_PROPERTY (0xC00E0002)

One or more properties resulted in an error.

MQ_ERROR_SERVICE_NOT_AVAILABLE (0xC00E000B)

The Message Queuing service is not available.

MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION (0xC00E0020)

The format name specified by the lpwcsFormatName parameter cannot be used. You cannot reference a public queue or a remote private queue in a call to this function using a direct format name, nor can you set the queue properties of a journal, dead-letter, or connector queue.

MQ_ERROR_WRITE_NOT_ALLOWED (0xC00E0065)

The properties for the queue cannot be set in the MSMQ Information Store (MQIS) because a new MQIS server is being installed.

MQ_INFORMATION_PROPERTY (0x400E0001)

One or more of the properties resulted in a warning even though the function completed.

Note

Apart from generic Message Queuing error codes, this function may return ADSI and LDAP error codes. For example, LDAP_BUSY (0x8007200E) is returned when the directory service server is busy.

Remarks

The following queue properties cannot be set by MQSetQueueProperties.

Property Name Reason
PROPID_Q_BASEPRIORITY For public queues only. Cannot be set for private queues.
PROPID_Q_CREATE_TIME Set by Message Queuing.
PROPID_Q_INSTANCE Set by Message Queuing.
PROPID_Q_MODIFY_TIME Set by Message Queuing.
PROPID_Q_PATHNAME Can only be set when the queue is created.
PROPID_Q_TRANSACTION Can only be set when the queue is created.

When setting the properties of a public queue, some clients may still see the old settings registered in the directory service after the properties have been changed. Changes to the directory service (such as setting properties) are replicated from domain controller to domain controller, which can cause delays in the availability of new information. Consequently, clients using a specific domain controller may still see the old property settings, even though the settings of the properties were changed by MQSetQueueProperties. Replication delays, including communication network delays such as down links, are controlled by the Message Queuing administrator.

A public queue's properties cannot be set if there is no connection to the directory service. This restriction applies to dependent client computers, independent client computers that are working offline, and Message Queuing routing servers (FRS).

Equivalent COM Method

When using COM components, you can set the properties of a queue by setting the properties of an MSMQQueueInfo object that has been initialized to represent the queue and then calling the Update method of the same object.

For information on See
A complete list of queue properties Message Queuing Properties
Obtaining a format name for opening a queue Obtaining Format Names
Offline operations Message Queuing Offline Support

Example Code

The following code examples are included in Using Message Queuing.

For an example of See
Setting the authentication level C/C++ Code Example: Setting PROPID_Q_AUTHENTICATE
Setting the base priority level C/C++ Code Example: Setting PROPID_Q_BASEPRIORITY
Setting the journaling level and the maximum size of the queue journal C/C++ Code Example: Setting PROPID_Q_JOURNAL

 C/C++ Code Example: Setting PROPID_Q_JOURNAL_QUOTA
Setting the queue label C/C++ Code Example: Setting PROPID_Q_LABEL
Setting the multicast address associated with the queue C/C++ Code Example: Setting PROPID_Q_MULTICAST_ADDRESS
Setting the privacy level of the queue C/C++ Code Example: Setting PROPID_Q_PRIV_LEVEL
Setting the maximum size of the queue C/C++ Code Example: Setting PROPID_Q_QUOTA
Setting the queue type C/C++ Code Example: Setting PROPID_Q_TYPE

Requirements

Windows NT/2000/XP: Included in Windows NT 4.0 SP3 and later.

Windows 95/98/Me: Included in Windows 95 and later.

Header: Declared in Mq.h.

Library: Use Mqrt.lib.

See Also

Message Queuing Functions
Queue Properties
aPropID
aPropVar
aStatus
MQGetQueueProperties
MQQUEUEPROPS
MQSetQueueSecurity