Condividi tramite


Metodo ICorProfilerInfo2::GetClassLayout

Ottiene le informazioni sul layout, in memoria, dei campi definiti dalla classe specificata. In altri termini, questo metodo ottiene gli offset dei campi della classe.

Sintassi

HRESULT GetClassLayout(  
    [in]  ClassID classID,  
    [in, out] COR_FIELD_OFFSET rFieldOffset[],  
    [in]  ULONG cFieldOffset,  
    [out] ULONG *pcFieldOffset,  
    [out] ULONG *pulClassSize);  

Parametri

classID
[in] ID della classe per la quale verrà recuperato il layout.

rFieldOffset
[in, out] Matrice di strutture COR_FIELD_OFFSET , ognuna delle quali contiene i token e gli offset dei campi della classe.

cFieldOffset
[in] Dimensione della matrice rFieldOffset.

pcFieldOffset
[out] Puntatore al numero complessivo di elementi disponibili. Se il parametro cFieldOffset è 0, questo valore indica il numero degli elementi necessari.

pulClassSize
[out] Puntatore a una posizione che contiene la dimensione, in byte, della classe.

Commenti

Il metodo GetClassLayout restituisce solo i campi definiti dalla classe stessa. Se anche la classe padre della classe ha definito alcuni campi, il profiler deve chiamare il metodo GetClassLayout sulla classe padre per ottenere quei campi.

Se si usa GetClassLayout con le classi di stringa, il metodo non riuscirà e invierà un codice di errore E_INVALIDARG. Usare ICorProfilerInfo2::GetStringLayout per ottenere informazioni sul layout di una stringa. GetClassLayout non riuscirà, inoltre, quando chiamato con una classe della matrice.

Dopo il completamento del metodo GetClassLayout, è necessario verificare che il buffer rFieldOffset sia abbastanza grande per contenere tutte le strutture COR_FIELD_OFFSET disponibili. A tale scopo, confrontare il valore a cui punta il parametro pcFieldOffset con la dimensione del parametro rFieldOffset diviso la dimensione di una struttura COR_FIELD_OFFSET. Se il parametro rFieldOffset non è abbastanza grande, allocare un buffer rFieldOffset più grande, aggiornare cFieldOffset con la nuova dimensione e chiamare nuovamente il metodo GetClassLayout.

In alternativa, è possibile chiamare innanzitutto GetClassLayout con un buffer rFieldOffset di lunghezza zero per ottenere le dimensioni del buffer corrette. È quindi possibile impostare le dimensioni del buffer sul valore restituito nel parametro pcFieldOffset e chiamare nuovamente GetClassLayout.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: Disponibile da 2.0

Vedi anche