Freigeben über


ICorProfilerInfo13::CreateHandle-Methode

Erstellt ein Handle, das ein angegebenes Objekt umschließt.

Syntax

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

Parameter

object
[in] Der Objektverweis, der mit einem Handle umschlossen werden soll.

type
[in] Der Typ des zu erstellenden Handles.

pHandle
[out] Ein vom Aufrufer bereitgestellter Zeiger, der auf das Handle zeigt, das erstellt wurde, um das angegebene object zu umschließen.

Bemerkungen

Im Folgenden sind die erwarteten Nutzungen abhängig vom angegebenen COR_PRF_HANDLE_TYPE-Wert aufgeführt:

  • COR_PRF_HANDLE_TYPE_WEAK: überwacht, ob ein Objekt im Laufe der Zeit im Arbeitsspeicher verbleibt. Wenn das umschlossene Objekt gesammelt wurde, wird ObjectID von ICorProfilerInfo13::GetObjectIDFromHandle als NULL zurückgegeben.
  • COR_PRF_HANDLE_TYPE_STRONG: erzwingt, dass ein Objekt Garbage Collections übersteht, auch wenn kein anderes Objekt darauf verweist.
  • COR_PRF_HANDLE_TYPE_PINNED: identisch mit dem starken Handle, stellt aber auch sicher, dass das Objekt während der Garbage Collection an der gleichen Adresse im Arbeitsspeicher verbleibt.

Um sicherzustellen, dass der object-Verweis gültig ist, muss diese Methode von einer ICorProfilerCallback Methode wie ICorProfilerCallback::ObjectAllocated aufgerufen werden. Sie können CreateHandle nicht über einen asynchronen EventPipe-Listener aufrufen. Das in den Nutzdaten eines Ereignisses empfangene Objekt wurde möglicherweise verworfen oder in Arbeitsspeicher verschoben, wenn zwischen dem Zeitpunkt der Ausgabe des Ereignisses und dem des Empfangs eine Garbage Collection erfolgt ist.

Vergessen Sie nicht, ICorProfilerInfo13::DestroyHandle aufzurufen, sobald ein erstelltes Handle nicht mehr benötigt wird. Es wird empfohlen, maximal nicht mehr als 4.096 Handles gleichzeitig zuzuteilen, um Auswirkungen auf die Garbage Collector-Leistung zu vermeiden.

Anforderungen

Plattformen: Weitere Informationen finden Sie unter Von .NET unterstützte Betriebssysteme.

Header: CorProf.idl, CorProf.h

.NET-Versionen: seit .NET 7.0 verfügbar

Siehe auch