Typical C++ Usage
IProvQueue *pProvQueue = NULL;
BSTR bstrRequest = NULL;
BSTR bstrQueueID = NULL;
VARIANT vStatus;
HRESULT hr = E_OUTOFMEMORY;
// The code for creating the queue manager client and the request string was skipped
...
// Create a suspended request
hr = pProvQueue->SubmitTrustedRequest(bstrRequest, TRUE, &bstrQueueID);
if(FAILED(hr)) goto LocalCleanup;
// Check that the request was indeed suspended
hr = pProvQueue->QueryStatus(bstrQueueID, &vStatus);
if(hr == S_OK)
{
if(SUCCEEDED(::VariantChangeType(&vStatus, &vStatus, 0, VT_BSTR)))
MessageBoxW(NULL, vStatus.bstrVal, L"Queued request status before activation", MB_OK);
::VariantClear(&vStatus);
}
// Now activate the request
hr = pProvQueue->Activate(bstrQueueID);
if(FAILED(hr)) goto LocalCleanup;
// Check the status again
hr = pProvQueue->QueryStatus(bstrQueueID, &vStatus);
if(hr == S_OK)
{
if(SUCCEEDED(::VariantChangeType(&vStatus, &vStatus, 0, VT_BSTR)))
MessageBoxW(NULL, vStatus.bstrVal, L"Queued request status after activation", MB_OK);
::VariantClear(&vStatus);
}
// Clean up
LocalCleanup:
if(pProvQueue)
pProvQueue->Release();
::SysFreeString(bstrRequest);
::SysFreeString(bstrQueueID);