ICLRDebuggingLibraryProvider::ProvideLibrary 方法

获取一个库提供程序回调接口,此接口允许根据需要定位和加载特定于公共语言运行时 (CLR) 版本的调试库。

语法

HRESULT ProvideLibrary(
     [in] const WCHAR* pwszFileName,
     [in] DWORD dwTimestamp,
     [in] DWORD dwSizeOfImage,
     [out] HMODULE* hModule);

参数

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

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

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

hModule
[out] 请求模块的句柄。

返回值

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

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

例外

备注

ProvideLibrary 允许调试器提供调试特定 CLR 文件(如 mscordbi.dll 和 mscordacwks.dll)所需的模块。 模块句柄必须保持有效,直到对 ICLRDebugging::CanUnloadNow 方法的调用指示句柄可能已被释放,此时调用方负责释放句柄。

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

重要

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

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

要求

平台:请参阅系统要求

标头:CorDebug.idl、CorDebug.h

库:CorGuids.lib

.NET Framework 版本:自 4 起可用

请参阅