C-C++ Code Example: Obtaining a List of Private Queues
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
This example provides an application-defined function that retrieves the list of path names of all the private queues residing on the computer whose name is passed to the function as a Unicode string.
In this example, the input string is not validated. If NULL is passed as the input string, a list of private queues on the local computer is obtained.
To retrieve a list of all the private queues residing on a specific computer
Define the required constants and variables.
Define an MQMGMTPROPS structure.
Specify PROPID_MGMT_MSMQ_PRIVATEQ as the property to be retrieved.
Initialize the MQMGMTPROPS structure.
Call MQMgmtGetInfo with MO_MACHINE_TOKEN as the object name to retrieve the list of path names of all the private queues on the computer specified.
Display the path names of the private queues found or process them as required.
Call MQFreeMemory to free the memory allocated by Message Queuing for the array of strings to store the path names.
Code Example
The following code example requires MSMQ 3.0.
HRESULT GetPrivateQs(
WCHAR * wszComputerName
)
{
// Define the required constants and variables.
const int NUMBEROFPROPERTIES = 1; // Number of properties
DWORD cPropId = 0; // Property counter
DWORD cQ = 0; // Queue counter
HRESULT hr = MQ_OK; // Return code
// Define an MQMGMTROPS structure.
MQMGMTPROPS mgmtprops;
MGMTPROPID aMgmtPropId[NUMBEROFPROPERTIES];
MQPROPVARIANT aMgmtPropVar[NUMBEROFPROPERTIES];
// Specify PROPID_MGMT_MSMQ_PRIVATEQ as a property to be retrieved.
aMgmtPropId[cPropId] = PROPID_MGMT_MSMQ_PRIVATEQ; // Property ID
aMgmtPropVar[cPropId].vt = VT_NULL; // Type indicator
cPropId++;
// Initialize the MQMGMTPROPS structure.
mgmtprops.cProp = cPropId; // Number of management properties
mgmtprops.aPropID = aMgmtPropId; // IDs of the management properties
mgmtprops.aPropVar = aMgmtPropVar; // Values of management properties
mgmtprops.aStatus = NULL; // No storage for error codes
// Call MQMgmtGetInfo to retrieve the information.
hr = MQMgmtGetInfo(wszComputerName, // Name of the computer
MO_MACHINE_TOKEN, // Object name
&mgmtprops); // Management properties structure
if (FAILED(hr))
{
return hr;
}
// Display the path names of the private queues found.
if (aMgmtPropVar[0].calpwstr.cElems > 0)
{
for (cQ = 0; cQ < aMgmtPropVar[0].calpwstr.cElems; cQ++)
{
wprintf(L"%d. %s\n", cQ + 1, aMgmtPropVar[0].calpwstr.pElems[cQ]);
}
}
// Free the memory allocated to store the path names.
for (cQ = 0; cQ < aMgmtPropVar[0].calpwstr.cElems; cQ++)
{
MQFreeMemory(aMgmtPropVar[0].calpwstr.pElems[cQ]);
}
MQFreeMemory(aMgmtPropVar[0].calpwstr.pElems);
return hr;
}