次の方法で共有


ModuleBuilder.DefineInitializedData メソッド

ポータブル実行可能 (PE) ファイルの .sdata セクションの初期化済みデータ フィールドを定義します。

Public Function DefineInitializedData( _
   ByVal name As String, _   ByVal data() As Byte, _   ByVal attributes As FieldAttributes _) As FieldBuilder
[C#]
public FieldBuilder DefineInitializedData(stringname,byte[] data,FieldAttributesattributes);
[C++]
public: FieldBuilder* DefineInitializedData(String* name,unsigned chardata __gc[],FieldAttributesattributes);
[JScript]
public function DefineInitializedData(
   name : String,data : Byte[],attributes : FieldAttributes) : FieldBuilder;

パラメータ

  • name
    データを参照するために使用される名前。name に null を埋め込むことはできません。
  • data
    データの BLOB。
  • attributes
    フィールドの属性。既定値は Static です。

戻り値

データを参照するフィールド。

例外

例外の種類 条件
ArgumentException name の長さが 0 です。

または

data のサイズが 0 以下か、0x3f0000 以上です。

ArgumentNullException name または data が null 参照 (Visual Basic では Nothing) です。
InvalidOperationException CreateGlobalFunctions は既に呼び出されています。

使用例

 
Dim currentDomain As AppDomain
Dim myAssemblyName As AssemblyName
' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain
myAssemblyName = New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = _
      currentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run)
' Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")
' Define the initialized data field in the .sdata section of the PE file.
Dim myFieldBuilder As FieldBuilder = _
      myModuleBuilder.DefineInitializedData("MyField", New Byte() {1, 0, 1}, _
      FieldAttributes.Static Or FieldAttributes.Public)
myModuleBuilder.CreateGlobalFunctions()

[C#] 
AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;
myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = 
   currentDomain.DefineDynamicAssembly
               (myAssemblyName, AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define the initialized data field in the .sdata section of the PE file.
FieldBuilder myFieldBuilder = 
    myModuleBuilder.DefineInitializedData("MyField",new byte[]{01,00,01},
               FieldAttributes.Static|FieldAttributes.Public);
 myModuleBuilder.CreateGlobalFunctions();

[C++] 
AppDomain* currentDomain;
AssemblyName* myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain::CurrentDomain;
myAssemblyName = new AssemblyName();
myAssemblyName->Name = S"TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = 
   currentDomain->DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess::Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule(S"TempModule");

// Define the initialized data field in the .sdata section of the PE file.
Byte temp0 [] = {01,00,01};
FieldBuilder* myFieldBuilder = myModuleBuilder->DefineInitializedData(
   S"MyField",
   temp0,
   static_cast<FieldAttributes>(FieldAttributes::Static|FieldAttributes::Public));
myModuleBuilder->CreateGlobalFunctions();

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

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

.NET Framework セキュリティ:

参照

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