Pushes an unmanaged pointer (type native int) to the native code implementing a particular virtual method associated with a specified object onto the evaluation stack.
The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:
FE 07 < T > |
ldvirtftn method |
Pushes the pointer to an object's virtual method method on the stack. |
The stack transitional behavior, in sequential order, is:
[The 'ordered' type of list has not been implemented in the ECMA stylesheet.]The resulting unmanaged pointer pushed onto the stack by the ldvirtftn instruction can be called using the OpCodes.Calli instruction if it references a managed method (or a stub that transitions from managed to unmanaged code).
The unmanaged pointer points to native code using the calling convention specified by in the metadata token method. As a result, the method pointer can be passed to unmanaged native code (for example, as a callback routine) if that routine expects the corresponding calling convention.
The following ILGenerator.Emit(OpCode) method overload can use the ldvirtftn opcode:
ILGenerator.Emit(OpCode, MethodInfo)