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