次の方法で共有


OpCodes.Ldvirtftn フィールド

指定したオブジェクトに関連付けられた特定の仮想メソッドを実装しているネイティブ コードへのアンマネージ ポインタ (natural int 型) を評価スタックにプッシュします。

Public Shared ReadOnly Ldvirtftn As OpCode
[C#]
public static readonly OpCode Ldvirtftn;
[C++]
public: static OpCode Ldvirtftn;
[JScript]
public static var Ldvirtftn : OpCode;

解説

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式 アセンブリ形式 説明
FE 07 < T > ldvirtftn method オブジェクトの仮想メソッド method へのポインタをスタックにプッシュします。

スタックの遷移動作を順番に示すと、次のようになります。

  1. オブジェクト参照がスタックにプッシュされます。
  2. スタックからオブジェクト参照がポップされ、メタデータ トークン method による指定に従って、メソッドへのエントリ ポイントのアドレスを検索します。
  3. method へのポインタがスタックにプッシュされます。

ldvirtftn 命令によってスタックにプッシュされたアンマネージ ポインタが、マネージ メソッド (またはマネージ コードからアンマネージ コードに遷移するスタブ) を参照している場合は、 Calli 命令を使用してこのアンマネージ ポインタを呼び出すことができます。

アンマネージ ポインタは、メタデータ トークン method によって指定される呼び出し規約を使用して、ネイティブ コードを指します。その結果、アンマネージ ネイティブ コードにメソッド ポインタを渡すことができます。たとえば、コールバック ルーチンとして渡します (そのルーチンに対応する呼び出し規約が必要な場合)。

ldvirtftn オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode, MethodInfo)

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間