Compartilhar 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
[in] A referência de objeto a ser encapsulada com um identificador.

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

pHandle
[out] Um ponteiro fornecido pelo chamador que apontará para o identificador criado para encapsular o object especificado.

Comentários

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 ObjectID nulo.
  • COR_PRF_HANDLE_TYPE_STRONG: impõe que um objeto sobreviva às coletas de lixo mesmo que nenhum outro objeto o referencie.
  • COR_PRF_HANDLE_TYPE_PINNED: o mesmo que um identificador 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 referência object seja válida, esse método precisa ser chamado de um método ICorProfilerCallback como ICorProfilerCallback::ObjectAllocated. Você não pode chamar CreateHandle de um ouvinte assíncrono do EventPipe. O objeto recebido por meio de uma carga de evento pode ter sido descartado ou movido na memória se tiver ocorrido uma coleta de lixo entre o momento em que o evento foi emitido e quando ele foi recebido.

Não se esqueça de chamar ICorProfilerInfo13::DestroyHandle depois que um identificador criado não for mais necessário. É recomendável ter menos de 4.096 identificadores alocados ao mesmo tempo para evitar afetar o desempenho do coletor de lixo.

Requisitos

Plataformas: consulte Sistemas operacionais compatíveis com .NET.

Cabeçalho: CorProf.idl, CorProf.h

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

Confira também