IeXdi2Exec::GetRunStatus (Windows Embedded CE 6.0)
1/5/2010
This method returns the current run status.
Syntax
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 Value
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
Header | eXDI2.h |
Library | ole32.lib, oleaut32.lib |
Windows Embedded CE | Windows CE 5.0 and later |