Forse non ho ben capito, ma quando passi un oggetto (classe) ad una funzione utilizzando byval , in realtà viene copiato il puntatore all'oggetto nello stack, giusto?
Mentre se viene passato utlizzando byref viene creato un puntatore (ma dove? nello stack?) al puntatore dell'oggetto.