获取一个库提供程序回调接口,该接口允许按需定位和加载公共语言运行时(CLR)版本特定的调试库。
语法
HRESULT ProvideWindowsLibrary (
[in] const WCHAR* pwszFileName,
[in] const WCHAR* pwszRuntimeModule,
[in] LIBRARY_PROVIDER_INDEX_TYPE indexType,
[in] DWORD dwTimestamp,
[in] DWORD dwSizeOfImage,
[out] LPWSTR* ppResolvedModulePath);
参数
pwszFilename
[in]要请求的模块的名称。
pwszRuntimeModule
[in]运行时或单文件模块路径。
indexType
[in]提供的索引信息类型(dwTimestamp/dwSizeOfImage)。 请参阅 LIBRARY_PROVIDER_INDEX_TYPE 枚举。
dwTimestamp
[in]存储在 PE 文件的 COFF 文件标头中的日期时间戳。
dwSizeOfImage
[in] SizeOfImage
存储在 PE 文件的 COFF 可选文件标头中的字段。
ppResolvedModulePath
[out]这是模块 dll 的 null 终止路径。 在 Windows 上,应使用 CoTaskMemAlloc 分配它。 在 Unix 上,应使用 malloc 分配它。 失败使它保持不变。 请参阅下面的安全说明!
返回值
此方法返回以下特定的 HRESULT 以及指示方法失败的 HRESULT 错误。
HRESULT | DESCRIPTION |
---|---|
S_OK |
该方法已成功完成。 |
注解
ProvideWindowsLibrary
允许调试器提供调试特定 CLR 文件所需的模块,例如 mscordbi.dll 和 mscordacwks.dll。
调试器可以使用任何可用的方法来查找或采购调试模块。
重要
此功能允许 API 调用方提供包含可执行文件和可能恶意代码的模块。 作为安全预防措施,调用方不应用于 ProvideWindowsLibrary
分发它不愿意执行自己的任何代码。
如果在已发布的库中发现严重安全问题(例如 mscordbi.dll 或 mscordacwks.dll),则可以修补填充码以识别文件的错误版本。 然后,填充码可以发出对已修补版本的文件的请求,并拒绝错误版本(如果提供它们以响应任何请求)。 仅当用户已修补到新版本的填充码时,才会发生这种情况。 未修补的版本将仍然易受攻击。
要求
平台: 请参阅 .NET 支持的作系统。
标头: dbgshim.h
库: dbgshim.dll、libdbgshim.so、libdbgshim.dylib
.NET 版本: 自 .NET Core 2.1 起可用