指定したオブジェクトをラップするハンドルを作成します。
構文
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 は nullObjectID
を返します。 -
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 以降で使用可能
こちらも参照ください
.NET