Comparteix a través de


Método ICorProfilerInfo13::CreateHandle

Crea un manipulador que encapsula un objeto especificado.

Sintaxis

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

Parámetros

object
[in] Referencia de objeto que se va a encapsular con un manipulador.

type
[in] Tipo de manipulador que se va a crear.

pHandle
[out] Puntero proporcionado por el autor de la llamada que apuntará al manipulador creado para encapsular el object especificado.

Comentarios

A continuación se muestran los usos esperados en función del valor COR_PRF_HANDLE_TYPE especificado:

  • COR_PRF_HANDLE_TYPE_WEAK: supervisa si un objeto permanece en la memoria a lo largo del tiempo. Si se ha recopilado el objeto encapsulado, ICorProfilerInfo13::GetObjectIDFromHandle devuelve un valor null ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: exige que un objeto sobreviva a las recolecciones de elementos no utilizados aunque ningún otro objeto haga referencia a él.
  • COR_PRF_HANDLE_TYPE_PINNED: igual que un manipulador seguro, pero también garantiza que el objeto permanezca en la misma dirección en la memoria durante las recolecciones de elementos no utilizados.

Para asegurarse de que la referencia object sea válida, se debe llamar a este método desde un método ICorProfilerCallback, como ICorProfilerCallback::ObjectAllocated. No se puede llamar a CreateHandle desde un agente de escucha asincrónico de EventPipe. Es posible que el objeto recibido mediante una carga de eventos se haya eliminado de la memoria o movido si se produjo una recolección de elementos no utilizados entre el momento de emisión del evento y su recepción.

No olvide llamar a ICorProfilerInfo13::DestroyHandle cuando ya no se necesite el manipulador que se ha creado. Se recomienda tener asignados menos de 4096 manipuladores al mismo tiempo para que ello no afecte al rendimiento del recolector de elementos no utilizados.

Requisitos

Plataformas: consulte Sistemas operativos compatibles con .NET.

Encabezado: CorProf.idl, CorProf.h

Versiones de .NET: disponible a partir de .NET 7.0

Consulte también