IeXdi2Exec::GetRunStatus (Windows CE 5.0)
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
Send Feedback on this topic to the authors