Sdílet prostřednictvím


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 objectobjektu .

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 null ObjectID.
  • 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

Viz také