允许调试器在 macOS 和 Linux 上提供特定于版本的公共语言运行时 (CLR) 调试库的路径。
语法
HRESULT ProvideUnixLibrary (
[in] const WCHAR* pwszFileName,
[in] const WCHAR* pwszRuntimeModule,
[in] LIBRARY_PROVIDER_INDEX_TYPE indexType,
[in] BYTE* pbBuildId,
[in] int iBuildIdSize,
[out] LPWSTR* ppResolvedModulePath);
参数
pwszFilename
[in]要请求的模块的名称。
pwszRuntimeModule
[in]运行时或单文件模块路径。
indexType
[in]提供的索引信息类型(pBuildId)。 请参阅 LIBRARY_PROVIDER_INDEX_TYPE 枚举。
pbBuildId
[in]Linux 或 macOS 模块生成 ID。如果检索生成 ID 时出现问题,可以为 null。
iBuildIdSize
[in]pbBuildId 数组中的字节数。 如果检索生成 ID 时出现问题,则为 0。
ppResolvedModulePath
[out]这是模块 dll 的 null 终止路径。 在 Unix 上,应使用 CoTaskMemAlloc 分配它。 在 Unix 上,应使用 malloc 分配它。 失败使它保持不变。 请参阅下面的安全说明!
返回值
此方法返回以下特定的 HRESULT 以及指示方法失败的 HRESULT 错误。
HRESULT | DESCRIPTION |
---|---|
S_OK |
该方法已成功完成。 |
注解
ProvideUnixLibrary
允许调试器提供调试特定 CLR 文件所需的模块,例如 mscordbi.dll 和 mscordacwks.dll。
调试器可以使用任何可用的方法来查找或采购调试模块。
重要
此功能允许 API 调用方提供包含可执行文件和可能恶意代码的模块。 作为安全预防措施,调用方不应用于 ProvideUnixLibrary
分发它不愿意执行自己的任何代码。
如果在已发布的库中发现严重安全问题(例如 mscordbi.dll 或 mscordacwks.dll),则可以修补填充码以识别文件的错误版本。 然后,填充码可以发出对已修补版本的文件的请求,并拒绝错误版本(如果提供它们以响应任何请求)。 仅当用户已修补到新版本的填充码时,才会发生这种情况。 未修补的版本将仍然易受攻击。
要求
平台: 请参阅 .NET 支持的作系统。
标头: dbgshim.h
库: dbgshim.dll、libdbgshim.so、libdbgshim.dylib
.NET 版本: 自 .NET Core 2.1 起可用