次の方法で共有


Marshal.OffsetOf メソッド

マネージ クラスのアンマネージ フォームのフィールド オフセットを返します。

Public Shared Function OffsetOf( _
   ByVal t As Type, _   ByVal fieldName As String _) As IntPtr
[C#]
public static IntPtr OffsetOf(Typet,stringfieldName);
[C++]
public: static IntPtr OffsetOf(Type* t,String* fieldName);
[JScript]
public static function OffsetOf(
   t : Type,fieldName : String) : IntPtr;

パラメータ

  • t
    指定したクラスを指定する TypeStructLayoutAttribute をクラスに適用する必要があります。
  • fieldName
    t パラメータ内のフィールド。

戻り値

プラットフォーム呼び出し宣言クラス t 内の、 fieldName パラメータのバイト単位のオフセット。

例外

例外の種類 条件
ArgumentException クラスを構造体としてエクスポートできません。またはフィールドが非パブリックです。

解説

OffsetOf は、アンマネージ構造体のレイアウトにおけるオフセットを返します。このオフセットは、マネージ構造体のレイアウトのオフセットに対応していない可能性もあります。マーシャリングすると、レイアウトを変換でき、オフセットを変更できます。 t パラメータには、値型または書式指定参照型 (レイアウトは sequential または explicit) を指定できます。レイアウト全体のサイズを取得するには、 Marshal.SizeOf メソッドを使用します。詳細については、「 値型に対する既定のマーシャリング 」を参照してください。

メモ   このメソッドは SecurityAction.LinkDemand を使用して、信頼関係のないコードからの呼び出しを防ぎます。 SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前の呼び出し元にのみ要求されます。信頼性が一部しか確認されていないコードから呼び出すことができるコードの場合、ユーザー入力を検証せずに Marshal クラスに渡すことは避けてください。 LinkDemand メンバの使用に関する重要な制約事項については、「 Demand と LinkDemand 」を参照してください。

必要条件

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

.NET Framework セキュリティ:

参照

Marshal クラス | Marshal メンバ | System.Runtime.InteropServices 名前空間 | SizeOf