Metoda ICorProfilerInfo13::CreateHandle
Vytvoří popisovač, který zabalí zadaný objekt.
Syntaxe
HRESULT CreateHandle(
[in] ObjectID object,
[in] COR_PRF_HANDLE_TYPE type,
[out] ObjectHandleID* pHandle);
Parametry
object
[v] Odkaz na objekt, který se má zalomit pomocí úchytu.
type
[v] Typ popisovače, který chcete vytvořit.
pHandle
[ven] Ukazatel poskytnutý volajícím, který bude odkazovat na popisovač vytvořený k zabalení zadaného object
objektu .
Poznámky
V závislosti na zadané COR_PRF_HANDLE_TYPE
hodnotě platí následující očekávané využití:
COR_PRF_HANDLE_TYPE_WEAK
: Monitoruje, jestli objekt zůstane v paměti v průběhu času. Pokud byl shromážděn zabalený objekt, ICorProfilerInfo13::GetObjectIDFromHandle vrátí hodnotu nullObjectID
.COR_PRF_HANDLE_TYPE_STRONG
: Vynucuje, aby objekt přežil uvolňování paměti, i když na něj žádný jiný objekt odkazuje.COR_PRF_HANDLE_TYPE_PINNED
: Stejný jako silný popisovač, ale také zajišťuje, že objekt zůstane ve stejné adrese v paměti během uvolňování paměti.
Chcete-li zajistit, aby object
odkaz byl platný, musí být tato metoda volána z ICorProfilerCallback
metody, jako je ICorProfilerCallback::ObjectAllocated. Nelze volat CreateHandle
z asynchronního naslouchacího procesu EventPipe. Objekt přijatý prostřednictvím datové části události mohl být uvolněn nebo přesunut v paměti, pokud došlo k uvolňování paměti mezi časem, kdy byla událost vygenerována a kdy byla přijata.
Nezapomeňte zavolat ICorProfilerInfo13::D estroyHandle , jakmile vytvořený popisovač už není potřeba. Doporučuje se mít současně přidělené méně než 4096 popisovačů, aby nedošlo k ovlivnění výkonu uvolňování paměti.
Požadavky
Platformy: Viz podporované operační systémy .NET.
Hlavička: CorProf.idl, CorProf.h
Verze .NET: Dostupné od .NET 7.0