Share via


IProvQueue::QueryStatus

Retrieves the current status of a queued request. Used to query requests managed by the Provisioning Queue Manager Service of Microsoft Provisioning Framework (MPF).

Arguments

Input Arguments Description

bstrQueueID

Queue ID of the query request. Returned by IProvQueue::SubmitRequest or IProvQueue::SubmitTrustedRequest.

Output Arguments Description

status

One of the following return values.

NameValueDescription
QUEUE_SUCCESS0The queue has completed successfully.
QUEUE_ERROR1The queue has completed with errors.
QUEUE_FAILURE2The queue has completed with failures.
QUEUE_ERROR_AND_FAILURE3The queue has completed with errors and failures.
QUEUE_PENDING4The queue is pending to be processed.
QUEUE_STARTED5The queue is being processed.
QUEUE_QUEUED_FOR_RETRY10The queue is being retried.
QUEUE_WITH_INCOMPLETE_PREREQ11The queue has parent queues that have not completed yet.
QUEUE_WITH_COMPLETE_PREREQ12The queue's parent queues have just completed. The queue is pending.
QUEUE_SUSPENDED13The queue is suspended.
QUEUE_SUSPENDED_WITH_WAITS14The queue is suspended and has parent queues that have not completed yet.
QUEUE_FAILED_AWAITING_OPERATOR15The queued request has failed all retry attempts and is now waiting for the operator to fail or retry.

Zero

Indicates success.

Non zero

Represents an error. For a list of error codes, see MPF Errors.

Remarks

C++ Syntax

HRESULT QueryStatus  ( 
    BSTR bstrQueueID, 
    VARIANT *status 
); 

Sample Code

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);

Applies To

IProvQueue

See also

Tasks

IProvQueue::QueryResults