Partilhar via


Método ICorProfilerInfo13::CreateHandle

Cria um identificador que encapsula um objeto especificado.

Sintaxe

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

Parâmetros

object
[em] A referência de objeto a ser encapsulada com uma alça.

type
[em] O tipo de identificador a ser criado.

pHandle
[saídas] Um ponteiro fornecido pelo chamador que apontará para o identificador criado para encapsular o .object

Observações

A seguir estão os usos esperados, dependendo do valor especificado COR_PRF_HANDLE_TYPE :

  • COR_PRF_HANDLE_TYPE_WEAK: Monitora se um objeto permanece na memória ao longo do tempo. Se o objeto encapsulado tiver sido coletado, ICorProfilerInfo13::GetObjectIDFromHandle retornará um null ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: Impõe que um objeto sobreviva às coletas de lixo mesmo que nenhum outro objeto faça referência a ele.
  • COR_PRF_HANDLE_TYPE_PINNED: O mesmo que uma alça forte, mas também garante que o objeto permaneça no mesmo endereço na memória durante as coletas de lixo.

Para garantir que a object referência é válida, esse método deve ser chamado de um ICorProfilerCallback método como ICorProfilerCallback::ObjectAllocated. Não é possível chamar CreateHandle de um ouvinte assíncrono do EventPipe. O objeto recebido por meio de uma carga útil de evento pode ter sido descartado ou movido na memória se uma coleta de lixo ocorreu entre o momento em que o evento foi emitido e quando foi recebido.

Não se esqueça de chamar ICorProfilerInfo13::D estroyHandle quando um identificador criado não for mais necessário. Recomenda-se ter menos de 4096 alças alocadas ao mesmo tempo para evitar afetar o desempenho do coletor de lixo.

Requisitos

Plataformas: Consulte Sistemas operacionais suportados pelo .NET.

Cabeçalho: CorProf.idl, CorProf.h

Versões do .NET: Disponível desde o .NET 7.0

Consulte também