提供用于枚举进程中的 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]指向包含相同大小 ppHandleArrayOut
和 pdwArrayLengthOut
长度的 DWORD 的指针。
返回值
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 起可用