ModuleBuilder.DefineInitializedData(String, Byte[], FieldAttributes) Metodo

Definizione

Definisce un campo di dati inizializzati nella sezione .sdata del file PE (Portable Executable).Defines an initialized data field in the .sdata section of the portable executable (PE) file.

public:
 System::Reflection::Emit::FieldBuilder ^ DefineInitializedData(System::String ^ name, cli::array <System::Byte> ^ data, System::Reflection::FieldAttributes attributes);
public System.Reflection.Emit.FieldBuilder DefineInitializedData (string name, byte[] data, System.Reflection.FieldAttributes attributes);
member this.DefineInitializedData : string * byte[] * System.Reflection.FieldAttributes -> System.Reflection.Emit.FieldBuilder
Public Function DefineInitializedData (name As String, data As Byte(), attributes As FieldAttributes) As FieldBuilder

Parametri

name
String

Nome usato per fare riferimento ai dati.The name used to refer to the data. name non può contenere valori Null incorporati.name cannot contain embedded nulls.

data
Byte[]

Oggetto binario di grandi dimensioni (BLOB) di dati.The binary large object (BLOB) of data.

attributes
FieldAttributes

Attributi per il campo.The attributes for the field. Il valore predefinito è Static.The default is Static.

Restituisce

Campo di riferimento ai dati.A field to reference the data.

Eccezioni

La lunghezza di name è zero.The length of name is zero.

-oppure--or- Le dimensioni dei data sono minori di o uguali a zero oppure maggiori di o uguali a 0x3f0000.The size of data is less than or equal to zero or greater than or equal to 0x3f0000.

name o data è null.name or data is null.

L'oggetto CreateGlobalFunctions() è stato chiamato in precedenza.CreateGlobalFunctions() has been previously called.

Esempi

Nell'esempio seguente viene usato il metodo DefineInitializedData per definire un campo di dati inizializzati nella sezione .sdata del file eseguibile di tipo PE.The following example uses the DefineInitializedData method to define an initialized data field in the .sdata section of the portable executable (PE) file.

AppDomain^ currentDomain;
AssemblyName^ myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain::CurrentDomain;
myAssemblyName = gcnew 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.
array<Byte>^ temp0 = {01,00,01};
FieldBuilder^ myFieldBuilder =
   myModuleBuilder->DefineInitializedData( "MyField", temp0,
      (FieldAttributes)(FieldAttributes::Static | FieldAttributes::Public) );
myModuleBuilder->CreateGlobalFunctions();
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();
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()

Commenti

Static viene incluso automaticamente nel attributes.Static is automatically included in attributes.

I dati definiti da questo metodo non vengono creati fino a quando non viene chiamato il metodo CreateGlobalFunctions.The data defined by this method is not created until the CreateGlobalFunctions method is called.

Nota

A partire dalla .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con il flag di ReflectionPermissionFlag.ReflectionEmit.Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. Vedere problemi di sicurezza nella reflection emit. Per usare questa funzionalità, l'applicazione deve essere destinata a .NET Framework 3.5.NET Framework 3.5 o versione successiva.(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

Si applica a