Compartir a través de


Método ICorProfilerInfo13::CreateHandle

Crea un identificador 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 ajustar con un identificador.

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

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

Observaciones

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

  • COR_PRF_HANDLE_TYPE_WEAK: supervisa si un objeto permanece en memoria con el tiempo. Si se ha recopilado el objeto ajustado, ICorProfilerInfo13::GetObjectIDFromHandle devuelve un valor NULL ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: exige que un objeto sobrevive a las recolecciones de elementos no utilizados incluso si ningún otro objeto hace referencia a él.
  • COR_PRF_HANDLE_TYPE_PINNED: igual que un controlador 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 object referencia es válida, este método debe llamarse desde un ICorProfilerCallback método como ICorProfilerCallback::ObjectAllocated. No se puede llamar CreateHandle desde un agente de escucha asincrónico de EventPipe. Es posible que el objeto recibido a través de una carga de eventos se haya eliminado o movido en memoria si se produjo una recolección de elementos no utilizados entre el momento en que se emitió el evento y cuándo se recibió.

No olvide llamar a ICorProfilerInfo13::D estroyHandle una vez que ya no se necesite un identificador creado. Se recomienda tener menos de 4096 identificadores asignados al mismo tiempo para evitar afectar 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 desde .NET 7.0

Consulte también