提供一個機制來列舉進程中的CLR。
語法
HRESULT EnumerateCLRs (
[in] DWORD debuggeePID,
[out] HANDLE** ppHandleArrayOut,
[out] LPWSTR** ppStringArrayOut,
[out] DWORD* pdwArrayLengthOut
);
參數
debuggeePID
[in]將列舉載入 CLR 之進程的進程識別碼。
ppHandleArrayOut
[out]數位的指標,其中包含用來繼續 CLR 啟動的事件句柄。 陣列中的每個句柄不保證都是有效的。 如果有效,句柄會當做對應運行時間位於 相同索引 ppStringArrayOut的繼續啟動事件使用。
ppStringArrayOut
[out]字串陣列的指標,這個陣列會指定進程中載入之 CLR 的完整路徑。
pdwArrayLengthOut
[out]DWORD 的指標,其中包含相同大小 ppHandleArrayOut 和 pdwArrayLengthOut的長度。
返回值
S_OK
成功判斷程式中的 CLR 數目,並已正確填入對應的句柄和路徑陣列。
E_INVALIDARG
ppHandleArrayOut或 ppStringArrayOut 為 null,或 pdwArrayLengthOut 為 null。
E_OUTOFMEMORY
函式無法為句柄和路徑陣列配置足夠的記憶體。
E_FAIL (或其他 E_ 傳回碼)
無法列舉載入的 CLR。
備註
針對 所 debuggeePID識別的目標進程,此函式會將路徑 ppStringArrayOut陣列傳回至進程中載入的 CLR;事件句柄的陣列, ppHandleArrayOut其可能包含相同索引上 CLR 的繼續啟動事件;以及數位的大小, pdwArrayLengthOut指定所載入的 CLR 數目。
在 Windows作系統上, debuggeePID 對應至 OS 進程識別碼。
和 ppHandleArrayOut 的記憶體ppStringArrayOut是由此函式所配置。 若要釋放配置的記憶體,您必須呼叫 CloseCLREnumeration 函式。
您可以使用這兩個陣列參數設定為 null 來呼叫此函式,以傳回目標進程中的 CLR 計數。 從這個計數中,呼叫端可以推斷將建立的緩衝區大小: (sizeof(HANDLE) * count) + (sizeof(LPWSTR) * count) + (sizeof(WCHAR*) * count * MAX_PATH)。
需求
平臺: 請參閱 .NET 支援的作系統。
標頭: dbgshim.h
連結庫: dbgshim.dll、libdbgshim.so、libdbgshim.dylib
.NET 版本: 自 .NET Core 2.1 起提供