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