Laut Microsoft ist diese Kompatibilität darauf zurückzuführen, dass die Assembly sowohl nativen als auch MSIL-Code enthält, sodass nativer Code .NET-Code aufrufen kann und umgekehrt. Aber wie wird technisch gesehen diese Kompatibilität zwischen nativem und MSIL-Code erreicht?
Angenommen, nativer Code ist im .text-Abschnitt eines .NET PE-Images und MSIL-Code in den .NET-Abschnitten gespeichert, wie kann dann MSIL-Code nativen Code aufrufen? Und wie kann nativer Code MSIL-Code aufrufen? Wie kommunizieren sie? Wer erlangt die Kontrolle über das Programm? Der native Code oder der verwaltete Code? Wenn der verwaltete Code die Kontrolle erlangt, wird er unter der CLR ausgeführt, aber wie ist es möglich, dem „nativen“ Heap Speicher zuzuweisen? Und wenn das Gegenteil der Fall ist, wie weist nativer Code dem CLR-Heap Speicher zu, wenn die CLR das Programm steuert?
Zum Beispiel:
Code: Select all
class Example {
public:
int example_method() {
return 1;
}
};
Ich habe nicht viele technische Informationen dazu gefunden; Ich würde mich über Ihre Hilfe freuen.
Mobile version