Typical C++ Usage
LPCWSTR wszRequest = L"<request>\n" +
L" <data>\n" +
L" <organizations>\n" +
L" <organization name=\"tailspintoys.com\"/>\n" +
L" </organizations>\n" +
L" </data>\n" +
L" <context>\n" +
L" <clientContext clientTransactionId=\"53367B03-63D3-44ae-B8AD-C1E57E876E6C\"/>\n" +
L" </context>\n" +
L" <procedure>\n" +
L" <execute namespace=\"Test Namespace\" procedure=\"Write Request\">\n" +
L" <forEach name=\"organization\" root=\"data\"\n" +
L" path=\"organizations/organization\"/>\n" +
L" <before source=\"organization\" destination=\"executeData\"/>\n" +
L" </execute>" +
L" </procedure>" +
L"</request>";
IProvQueue * pProvQueue = NULL;
BSTR bstrRequest = ::SysAllocString(wszRequest);
BSTR bstrQueueID = NULL;
HRESULT hr = E_OUTOFMEMORY;
if(bstrRequest)
{
// Create queue manager client:
hr = CoCreateInstance(CLSID_ProvQueueClient, NULL, CLSCTX_ALL, IID_IProvQueue, (void**)(&pProvQueue));
if(hr == S_OK)
{
hr = pProvQueue->SubmitTrustedRequest(bstrRequest, FALSE, &bstrQueueID);
pProvQueue->Release();
}
}
// Get the error description in the case of error
if(FAILED(hr))
{
IErrorInfo* pErrInfo = NULL;
if(::GetErrorInfo(0, &pErrInfo) == S_OK && pErrInfo)
{
pErrInfo->GetDescription(&bstrQueueID);
pErrInfo->Release();
}
}
// Show the results
MessageBoxW(NULL, bstrQueueID ? bstrQueueID : L"Unknown error occured", L"Queued request results", MB_OK);
// Clean up
::SysFreeString(bstrRequest);
::SysFreeString(bstrQueueID);