Clr profiling api 如何使用ICorProfilerInfo2从字节数组对象获取值

Clr profiling api 如何使用ICorProfilerInfo2从字节数组对象获取值,clr-profiling-api,Clr Profiling Api,我正在使用ICorProfilerCallback2接口来分析我的应用程序。在函数enterhook中,我试图从字节数组中读取值,该数组作为参数传递给函数。我有参数信息COR_PRF_FUNCTION_argument_info,从中可以得到字节数组参数的起始地址 如果是字符串参数,我可以使用ICorProfilerInfo2接口中的GetStringLayout方法来获取bufferoffset和stringlengthoffset 如何找到字节数组的偏移量以及如何从中读取值 在哪里可以找到这

我正在使用ICorProfilerCallback2接口来分析我的应用程序。在函数enterhook中,我试图从字节数组中读取值,该数组作为参数传递给函数。我有参数信息COR_PRF_FUNCTION_argument_info,从中可以得到字节数组参数的起始地址

如果是字符串参数,我可以使用ICorProfilerInfo2接口中的GetStringLayout方法来获取bufferoffset和stringlengthoffset

如何找到字节数组的偏移量以及如何从中读取值


在哪里可以找到这些文档?

如果您有参数的ObjectID或COR_PRF_FUNCTION_ARGUMENT_范围,您至少可以轻松地使用对象/数组,而不是值类型。必须使用元数据验证参数类型

您可以使用ICorProfilerInfo::GetClassFromObject和ICorProfilerInfo::IsArrayClass确定它是否是数组。如果是这样,IsArrayClass将为您提供数组的类型。Net中的数组有一个特定的布局,我不认为它是在官方文档中:ClassID总是8字节,大小总是8字节,比所有元素都多,没有填充注意:对象是由ObjectID存储的,就像在其他内存区域中一样。 您还可以使用ICorProfilerInfo2::GetArrayObjectInfo获取需要从维度和对象的起始地址计算的大小

相关内容如下: