Typical C++ Usage
IProvQueue *pProvQueue = NULL;
BSTR bstrRequest = NULL;
BSTR bstrQueueID = NULL;
VARIANT vStatus;
HRESULT hr = E_OUTOFMEMORY;
LPCWSTR wszStatus[] = {
L"The queue has completed successfully.",
L"The queue has completed with errors.",
L"The queue has completed with failures.",
L"The queue has completed with errors and failures.",
L"The queue is pending to be processed.",
L"The queue is being processed.",
L"The queue is being retried.",
L"The queue has parent queues that have not completed yet.",
L"The queue's parent queues have just completed. The queue is pending.",
L"The queue is suspended.",
L"The queue is suspended and has parent queues that have not completed yet.",
L"The queued request has failed all retry attempts and is now waiting for the " +
L"operator to fail or retry.",
L"Unknown status code.",
};
// The code for creating the queue manager client and the request string was skipped
...
// Create a queued request
hr = pProvQueue->SubmitTrustedRequest(bstrRequest, FALSE, &bstrQueueID);
if(FAILED(hr)) goto LocalCleanup;
// Do something
...
// Check the current status
hr = pProvQueue->QueryStatus(bstrQueueID, &vStatus);
if(FAILED(hr)) goto LocalCleanup;
if(SUCCEEDED(::VariantChangeType(&vStatus, &vStatus, 0, VT_I4)))
{
if(vStatus.lVal < 0 || vStatus.lVal >= (sizeof(wszStatus) / sizeof(*wszStatus)))
vStatus.lVal = sizeof(wszStatus) / sizeof(*wszStatus) - 1;
MessageBoxW(NULL, wszStatus[vStatus.lVal], L"Current queued request status ", MB_OK);
}
::VariantClear(&vStatus);
// Clean up
LocalCleanup:
if(pProvQueue)
pProvQueue->Release();
::SysFreeString(bstrRequest);
::SysFreeString(bstrQueueID);