次の方法で共有


EnumerateCLRs 関数

プロセス内の 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]等しいサイズの ppHandleArrayOutpdwArrayLengthOutの長さを含む DWORD へのポインター。

戻り値

S_OK
プロセス内の CLR の数が正常に決定され、対応するハンドル配列とパス配列が正しく入力されました。

E_INVALIDARG
ppHandleArrayOutまたはppStringArrayOutが null であるか、pdwArrayLengthOutが null です。

E_OUTOFMEMORY
この関数は、ハンドル配列とパス配列に十分なメモリを割り当てることができません。

E_FAIL (またはその他の E_ リターン コード)
読み込まれた CLR を列挙できません。

注釈

debuggeePIDによって識別されるターゲット プロセスの場合、関数は、プロセスに読み込まれた CLR に対してパスの配列 (ppStringArrayOut) を返します。イベント ハンドルの配列、ppHandleArrayOut。CLR の継続スタートアップ イベントが同じインデックスに含まれている可能性があります。配列のサイズ (pdwArrayLengthOut)、読み込まれる CLR の数を指定します。

Windows オペレーティング システムでは、 debuggeePID は OS プロセス識別子にマップされます。

ppHandleArrayOutppStringArrayOutのメモリは、この関数によって割り当てられます。 割り当てられたメモリを解放するには、 CloseCLREnumeration 関数を呼び出す必要があります。

この関数は、ターゲット プロセス内の CLR の数を返すために、両方の配列パラメーターを null に設定して呼び出すことができます。 この数から、呼び出し元は、作成されるバッファーのサイズ ( (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 以降で使用可能