Méthode IDataModelManager2 ::CreateTypedObjectReference (dbgmodel.h)
La méthode CreateTypedObjectReference est sémantiquement similaire à la méthode CreateTypedObject, sauf qu’elle crée une référence à la construction native/language sous-jacente. La référence créée est un objet qui a une sorte de ObjectTargetObjectReference. Il ne s’agit pas d’une référence native, car le langage sous-jacent peut prendre en charge (par exemple, un & C++ ou un &&). Il est tout à fait possible d’avoir un ObjectTargetObjectReference vers une référence C++.
Un objet de type ObjectTargetObjectReference peut être converti en valeur sous-jacente à l’aide de la méthode Dereference sur IModelObject. La référence peut également être transmise à l’évaluateur d’expression de l’hôte sous-jacent afin de l’attribuer à la valeur de manière appropriée.
Syntaxe
HRESULT CreateTypedObjectReference(
IDebugHostContext *context,
Location objectLocation,
IDebugHostType *objectType,
_COM_Errorptr_ IModelObject **object
);
Paramètres
context
Contexte hôte de débogage dans lequel se trouve cet objet. Si aucun contexte explicite n’est donné, le contexte de l’objet nouvellement créé héritera du contexte de l’argument objectType. Un appelant peut passer la valeur de marqueur spéciale USE_CURRENT_HOST_CONTEXT pour indiquer que l’objet doit recevoir le contexte actuel dans l’interface utilisateur du débogueur.
objectLocation
Emplacement de l’objet dans l’espace d’adressage de la cible de débogage. Si l’emplacement est une adresse virtuelle, l’emplacement peut être construit par le client à l’aide d’un décalage 64 bits dans l’espace d’adressage ; sinon , l’emplacement doit être récupéré à partir d’une autre interface hôte de débogage.
objectType
Type de l’objet en cours de construction. Le contexte du type se propage à l’objet nouvellement créé si aucun contexte explicite n’est passé dans l’argument de contexte.
object
La référence d’objet nouvellement créée sera retournée ici.
Valeur retournée
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
Exemple de Code
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spType; /* get a type (see CreateTypedObject) */
Location creationLocation; /* get a location (see CreateTypedObject) */
ComPtr<IModelObject> spObjectRef;
if (SUCCEEDED(spManager->CreateTypedObjectReference(nullptr,
creationLocation,
spType.Get(),
&spObjectRef)))
{
// spObjectRef now contains a reference to the underlying object.
// This can be dereferenced to get the value or passed to the
// EE to do an assignment.
ComPtr<IModelObject> spObject;
if (SUCCEEDED(spObjectRef->Dereference(&spObject)))
{
// spObject now contains the object itself.
}
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dbgmodel.h |