获取一个库提供程序回调接口,该接口允许根据需要定位和加载特定于公共语言运行时 (CLR) 版本的调试库。
HRESULT ProvideLibrary(
[in] const WCHAR* pwszFileName,
[in] DWORD dwTimestamp,
[in] DWORD dwSizeOfImage,
[out] HMODULE* hModule);
参数
pwszFilename
[in] 所请求的模块的名称。dwTimestamp
[in] 存储在 PE 文件的 COFF 文件头中的日期时间戳。pLibraryProvider
[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)中发现了严重的安全问题,则可以对填充码进行修补以识别这些文件的错误版本。然后,填充码会对文件的修补后版本发出请求,并拒绝错误的版本(如果在响应任何请求时提供这些版本)。上述情况仅在用户已对新版本的填充码进行修补后发生。未经修补的版本依然容易受到攻击。 |
要求
**平台:**请参见 .NET Framework 系统要求。
头文件: CorDebug.idl、CorDebug.h
**库:**CorGuids.lib
**.NET Framework 版本:**4