共用方式為


ICLRDebuggingLibraryProvider3::P rovideUnixLibrary 方法

允許調試程式提供 macOS 和 Linux 上版本特定 Common Language Runtime (CLR) 偵錯連結庫的路徑。

語法

HRESULT ProvideUnixLibrary (
     [in] const WCHAR* pwszFileName,
     [in] const WCHAR* pwszRuntimeModule,
     [in] LIBRARY_PROVIDER_INDEX_TYPE indexType,
     [in] BYTE* pbBuildId,
     [in] int iBuildIdSize,
     [out] LPWSTR* ppResolvedModulePath);

參數

pwszFilename
[in]所要求模組的名稱。

pwszRuntimeModule
[in]運行時間或單一檔案模組路徑。

indexType
[in]提供的索引資訊類型 (pBuildId)。 請參閱 LIBRARY_PROVIDER_INDEX_TYPE 列舉。

pbBuildId
[in]Linux 或 macOS 模組組建標識碼。如果擷取組建標識符時發生錯誤,可能是 Null。

iBuildIdSize
[in]pbBuildId 陣列中的位元組數目。 如果擷取組建標識符時發生錯誤,可以是0。

ppResolvedModulePath
[out]這是模組 dll 的 Null 終止路徑。 在 Unix 上,應該使用 CoTaskMemAlloc 進行配置。 在 Unix 上,它應該使用 malloc 進行配置。 失敗會使它不受影響。 請參閱下方的安全性注意事項!

返回值

這個方法會傳回下列特定的 HRESULT,以及指出方法失敗的 HRESULT 錯誤。

HRESULT 說明
S_OK 方法已順利完成。

備註

ProvideUnixLibrary 可讓除錯特定 CLR 檔案所需的模組,例如 mscordbi.dll 與 mscordacwks.dll。

調試程式可以使用任何可用的方法來尋找或採購偵錯模組。

這很重要

這項功能可讓 API 呼叫端提供包含可執行檔和可能惡意程式代碼的模組。 作為安全性預防措施,呼叫端不應該使用 ProvideUnixLibrary 來散發它不願意自行執行的任何程序代碼。

如果在已發行的連結庫中發現嚴重的安全性問題,例如 mscordbi.dll 或 mscordacwks.dll,則可以修補填充碼來辨識錯誤的檔案版本。 然後,填充碼可以發出已修補版本的檔案要求,並在提供錯誤版本以回應任何要求時拒絕錯誤版本。 只有當使用者已修補為新版本的填充碼時,才會發生此情況。 未修補的版本將仍然脆弱。

需求

平臺: 請參閱 .NET 支援的作系統

標頭: dbgshim.h

連結庫: dbgshim.dll、libdbgshim.so、libdbgshim.dylib

.NET 版本: 自 .NET Core 2.1 起提供