次の方法で共有


ICorProfilerInfo13::CreateHandle メソッド

指定したオブジェクトをラップするハンドルを作成します。

構文

    HRESULT CreateHandle(
                [in] ObjectID            object,
                [in] COR_PRF_HANDLE_TYPE type,
                [out] ObjectHandleID*    pHandle);

パラメーター

object
[in]ハンドルでラップするオブジェクト参照。

type
[in]作成するハンドルの種類。

pHandle
[out]指定した objectをラップするために作成されたハンドルを指す、呼び出し元が指定したポインター。

注釈

指定した COR_PRF_HANDLE_TYPE 値に応じて想定される使用法を次に示します。

  • COR_PRF_HANDLE_TYPE_WEAK: オブジェクトが時間の経過と同時にメモリ内にとどまっているかどうかを監視します。 ラップされたオブジェクトが収集された場合、 ICorProfilerInfo13::GetObjectIDFromHandle は null ObjectIDを返します。
  • COR_PRF_HANDLE_TYPE_STRONG: 他のオブジェクトがガベージ コレクションを参照していない場合でも、オブジェクトがガベージ コレクションを存続することを強制します。
  • COR_PRF_HANDLE_TYPE_PINNED: 強力なハンドルと同じですが、ガベージ コレクション中もオブジェクトがメモリ内の同じアドレスに留まります。

object参照が有効であることを確認するには、ICorProfilerCallback などの メソッドからこのメソッドを呼び出す必要があります。 EventPipe 非同期リスナーから CreateHandle を呼び出すことはできません。 イベント ペイロードを介して受信したオブジェクトは、イベントが生成されてから受信までの間にガベージ コレクションが発生した場合に、メモリ内で破棄または移動された可能性があります。

作成されたハンドルが不要になったら、 ICorProfilerInfo13::D estroyHandle を呼び出すのを忘れないでください。 ガベージ コレクターのパフォーマンスに影響を与えないように、4096 未満のハンドルを同時に割り当てることをお勧めします。

要求事項

プラットフォーム:サポートされている .NET オペレーティング システムを参照してください。

ヘッダ: CorProf.idl、CorProf.h

.NET バージョン: .NET 7.0 以降で使用可能

こちらも参照ください