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