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 起可用