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 セキュリティ:
- ReflectionPermission SecurityAction.Demand、ReflectionEmit
参照
ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間