Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从COR Profiler中的AssemblyID获取程序集信息?_C++_.net_Clr Profiling Api - Fatal编程技术网

C++ 如何从COR Profiler中的AssemblyID获取程序集信息?

C++ 如何从COR Profiler中的AssemblyID获取程序集信息?,c++,.net,clr-profiling-api,C++,.net,Clr Profiling Api,我想捕获所有加载程序集的信息以及诸如公钥、版本等元数据。为此,我使用ICorProfiling API和回调开发了.Net自定义探查器。我可以通过订阅AssemblyLoadFinished事件来捕获加载的程序集ID。但是,从这个AssemblyID中,如何获取程序集元数据,如公钥、版本等 我找到了一个方法“IMetaDataAssemblyImport::GetAssemblyProps”。但它接受程序集令牌(即mdAssembly)。如何将AssemblyID转换为mdAssembly 元数

我想捕获所有加载程序集的信息以及诸如公钥、版本等元数据。为此,我使用ICorProfiling API和回调开发了.Net自定义探查器。我可以通过订阅AssemblyLoadFinished事件来捕获加载的程序集ID。但是,从这个AssemblyID中,如何获取程序集元数据,如公钥、版本等

我找到了一个方法“IMetaDataAssemblyImport::GetAssemblyProps”。但它接受程序集令牌(即mdAssembly)。如何将AssemblyID转换为mdAssembly

元数据令牌(包括程序集元数据令牌)是特定于模块的,一个显示的模块只能定义一个程序集,因此实际上实际上只有一个程序集元数据令牌;但您可能应该使用而不是硬编码


真正的问题是如何为AssemblyID获取正确的IMetaDataAssemblyImport实例。您可以使用获取清单模块的模块id,然后获取IMetaDataAssemblyImport实例。

感谢Brian的响应。我应该为GetAssemblyProps方法中的公钥参数指定什么类型?取决于,如果不需要公钥,则只需传入null。如果您确实需要公钥,请传入一个引用,指向它可以将指针写入程序集密钥的位置。是的,我需要它,这就是我想了解如何传递引用的原因?我的意思是,首先,我如何声明(什么类型)变量?这是非常直接的
void*keyPtr;乌隆·凯伦;hr=aImport.GetAssemblyProps(mdAssembly,&keyPtr,&keyLen,…
然后keyPtr将包含一个指向该键的指针,keyLen将是该键的长度。在这里,我将keyPtr标记为const,即const void*keyPtr;并且它抛出错误,声明“访问冲突读取位置0xffffffffffffff”。您可以在这里看到我的代码