CanonicalizeLocation 是一种将给定位置转换为其“规范表示形式”的方法,这是一种选定的标准形式。 它可以处理不同类型的位置,例如虚拟内存和寄存器,可通过多种方式表示。
此函数可能很有用的经典示例涉及 Windows 调试工具(dbgeng),该调试工具将 32 位地址扩展到 64 位,从而在高地址感知 32 位进程中表示和区分某些地址区域时遇到困难。
请注意,比较从组件获取的位置或地址,报告对零个扩展地址进行签名的扩展地址可能会导致无法预见的故障。 你可以事先调用 CanonicalizeLocation() 来逃避这种错误。 请记住,此方法不会转换位置的类型。 若要转换类型,应调用 LinearizeLocation()。
语法
HRESULT CanonicalizeLocation(
IDebugHostContext *context,
Location ___location,
Location *pCanonicalizedLocation
);
参数
context
当前上下文。
___location
要规范化的位置。
pCanonicalizedLocation
指向将存储规范化位置的指针。
返回值
此方法返回 HRESULT,指示成功或失败。
言论
尽管此方法将位置的表示形式更改为其规范形式,但它不会更改位置的实际类型。 使用 LinearizeLocation() 方法 执行此类类型转换。
要求
要求 | 价值 |
---|---|
标头 | dbgmodel.h |