IDebugHostEvaluator2::AssignTo 方法 (dbgmodel.h)
AssignTo 方法會根據所偵錯語言的語意來執行指派。
語法
HRESULT AssignTo(
IModelObject *assignmentReference,
IModelObject *assignmentValue,
_COM_Errorptr_ IModelObject **assignmentResult,
IKeyStore **assignmentMetadata
);
參數
assignmentReference
所指派項目的參考。 雖然這可以是以模型為基礎的參考(例如:ObjectTargetObjectReference)或語言參考(例如:C++&),但它必須是某種類型的參考(LVALUE)。
assignmentValue
指派給透過 assignmentReference 自變數所參考的值。 請注意,在指派之前,此值可能會根據語言規則強制或轉換。
assignmentResult
如果成功,則為指派的結果。 如果不是,選擇性地,表示指派失敗的原因擴充錯誤物件。 請注意,在此案例中,指派的結果是語言定義為指派作業的結果。 針對C++,這會是指派之專案的語言參考。
assignmentMetadata
此處會傳回任何與指派結果相關聯的選擇性元數據。
傳回值
此方法會傳回 HRESULT,指出成功或失敗。
言論
程式代碼範例
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IModelObject> spObject; /* get an object; for an example - consider a
'class MyClass' with an integer value
m_intVal */
ComPtr<IDebugHostEvaluator2> spEval2;
if (SUCCEEDED(spHost.As(&spEval2)))
{
// Get a reference to the m_intVal field
ComPtr<IModelObject> spIntValRef;
if (SUCCEEDED(spObject->GetRawReference(SymbolField,
L"m_intVal",
RawSearchNone,
&spIntValRef)))
{
// Box some value we want to assign.
VARIANT vtVal;
vtVal.vt = VT_UI8;
vtVal.ullVal = 123456;
ComPtr<IModelObject> spAssignmentValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic,
&vtVal,
&spAssignmentValue)))
{
ComPtr<IModelObject> spAssignmentResult;
if (SUCCEEDED(spEval2->AssignTo(spIntValRef.Get(),
spAssignmentValue.Get(),
&spAssignmentResult,
nullptr)))
{
// The (unsigned __int64)123456 was assigned to m_intVal with
// the set of coercions defined by the language (C++)
// spAssignmentResult has the language meaning of operator=()
// in this case. This would be a MyClass&.
}
}
}
}
要求
要求 | 價值 |
---|---|
標頭 | dbgmodel.h |