ICLRDebuggingLibraryProvider2::ProvideLibrary2 方法

允许调试程序提供特定于版本的公共语言运行时 (CLR) 调试库的路径。

语法

HRESULT ProvideLibrary2 (
     [in] const WCHAR* pwszFileName,
     [in] DWORD dwTimestamp,
     [in] DWORD dwSizeOfImage,
     [out] LPWSTR* ppResolvedModulePath);

参数

pwszFilename
[in] 请求的模块的名称。

dwTimestamp
[in] 存储在 PE 文件的 COFF 文件头中的日期时间戳。

dwSizeOfImage
[in] 存储在 PE 文件的 COFF 可选文件头中的 SizeOfImage 字段。

ppResolvedModulePath
[out] 这是模块 dll 的 null 终止路径。 在 Windows 上,应使用 CoTaskMemAlloc 来分配它。 在 Unix 上,应使用 malloc 来分配它。 失败使它保持不变。 请参阅下面的安全说明!

返回值

此方法返回以下特定 HRESULT 以及表示方法失败的 HRESULT 错误。

HRESULT 说明
S_OK 该方法已成功完成。

备注

ProvideLibrary2 允许调试器提供调试特定 CLR 文件(如 mscordbi.dll 和 mscordacwks.dll)所需的模块。

调试器可以使用任何可用方法来查找或获取调试模块。

重要

此功能允许 API 调用方提供包含可执行文件的模块,并提供可能存在的恶意代码。 为了安全预防起见,调用方不应使用 ProvideLibrary2 分发任何不愿意自行执行的代码。

如果在发布的库中发现了严重的安全问题,例如 mscordbi.dll 或 mscordacwks.dll,则可以对填充程序进行修补,以识别文件的错误版本。 然后,填充程序可以发出请求来获取文件的已修补版本,并拒绝错误的文件版本(如果提供这些文件只是为了响应任何请求)。 仅当用户已修补新版本填充程序时,才会发生这种情况。 未修补的版本仍将容易受到攻击。

要求

平台:请参阅 .NET 支持的操作系统

标头:dbgshim.h

库:dbgshim.dll、libdbgshim.so、libdbgshim.dylib

.NET 版本:自 .NET Core 2.1 起可用