ΠΡΠΈΠ²Π΅Ρ.
ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ Β«ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π°Β» ΠΊΠ½ΠΈΠ³ΠΈ Β«Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΒ», Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ 1: 1 ΠΌΠ΅ΠΆΠ΄Ρ MethodDesc ΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π²Ρ ΠΎΠ΄Π°. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ»ΠΎΡ ΠΈ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΡΠΈ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 1: 1?
@ ΠΠΌΠΈΡΡΠΈΠΉ-ΠΠΎΡΠ°ΡΠ½ΠΈΠΊΠΎΠ² @ ruben-ayrapetyan
ΠΠ΄ΠΈΠ½ methoddesc ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ΅ΠΊ Π²Ρ ΠΎΠ΄Π°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ MethodDesc.
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° -> MethodDesc ΡΠ²Π»ΡΠ΅ΡΡΡ MethodTable::GetMethodDescForSlotAddress
.
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ MethodDesc -> ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π° - MethodDesc::GetMethodEntryPoint
.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΄ΠΈΠ½ methoddesc ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ΅ΠΊ Π²Ρ ΠΎΠ΄Π°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ MethodDesc.
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° -> MethodDesc ΡΠ²Π»ΡΠ΅ΡΡΡ
MethodTable::GetMethodDescForSlotAddress
.ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ MethodDesc -> ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° -
MethodDesc::GetMethodEntryPoint
.