Partager via


IeXdi2Exec::GetRunStatus (Windows CE 5.0)

Send Feedback

This method returns the current run status.

HRESULT GetRunStatus(  [out] RUN_STATUS_TYPE2* pers2Current,  [out] DWORD* pdwNbOfHaltReasons,  [out, size_is (,*pdwNbOfHaltReasons)] HALT_REASON_TYPE2 **ppehr2List,  [out] ADDRESS_TYPE* pCurrentExecAddress,  [out] DWORD64* pdw64CycleSinceLastRun);

Parameters

  • pers2Current
    Run status type.

  • pdwNbOfHaltReasons
    Number of halt reasons that are provided in pehr2List.

  • pehr2List
    Pointer to an array that lists possible reasons for halt.

    If the status is not a halt, the pointer to the list should be NULL.

    The elements in this array must be values listed in HALT_REASON_TYPE2.

    The buffer for this value is allocated by CoTaskMemAlloc.

  • pCurrentExecAddress
    Program or instruction pointer if run status is halted; undefined otherwise.

  • pdw64CycleSinceLastRun
    Number of clock cycles executed since target resumed execution.

Return Values

The following table shows return values for this method.

Value Description
S_OK Indicates the function was successful.
E_FAIL Indicates an unspecified failure.
EXDI_E_COMMUNICATION Indicates a communication error between host driver and debugging target.

Remarks

To avoid resource leaking, use CoTaskMemFree to free the task memory used by the buffer that this function uses to return the array of reasons for the halt, pehr2List, and the pet member of HALT_REASON_TYPE2, which indicates the exception type code and the notification phase of the exception that caused the halt.

In addition, the pieXdi2CodeBp and pieXdi2DataBp members of the HALT_REASON_TYPE2 structure must be released, if non-NULL.

The following example shows how you might use CoTaskMemFree to release the memory held for the return buffers.

RUN_STATE_TYPE2 rst2;
DWORD dwNbHaltReasons;
HALT_REASON_TYPE2 *ppehr2List;
ADDRESS_TYPE CurrentAddress;
DWORD64 dw64Cycles;

HRESULT hr = pieXdi2Exec->GetRunStatus (&rst2, &dwNbHaltReasons, &ppehr2List,
        &CurrentAddress, &dw64Cycles);
if (SUCCEEDED (hr))
{
    // Use status ..
    for (DWORD i = 0; i < dwNbHaltReasons; ++i)
    {
        if (phrt2Array[i].pieXdi2CodeBp)
        {
            phrt2Array[i].pieXdi2CodeBp->Release ();
            phrt2Array[i].pieXdi2CodeBp = 0;
        }
        if (phrt2Array[i].pieXdi2DataBp)
        {
phrt2Array[i].pieXdi2DataBp->Release ();
phrt2Array[i].pieXdi2DataBp = 0;
        }
        if (ppehr2List[i].pet)
        {
            CoTaskMemFree (ppehr2List[i].pet);
            ppehr2List[i].pet = 0;
        }
    }
    CoTaskMemFree (ppehr2List);
    phrt2Array = 0;
}

Requirements

OS Version: Windows CE 5.0 and later.
Header: eXDI2.h.
Link Library: ole32.lib, oleaut32.lib.

See Also

IeXDI2 Interfaces

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.