允許調試程式提供 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 起提供