ModuleBuilder.DefineInitializedData(String, Byte[], FieldAttributes) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert ein initialisiertes Datenfeld im Sdata-Abschnitt der portablen ausführbaren Datei (PORTABLE Ausführbare Datei, PE).
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
Parameter
- name
- String
Der Name, der verwendet wird, um auf die Daten zu verweisen.
name Eingebettete Nullwerte können nicht enthalten.
- data
- Byte[]
Das binäre große Objekt (BLOB) von Daten.
- attributes
- FieldAttributes
Die Attribute für das Feld. Der Standardwert lautet Static.
Gibt zurück
Ein Feld, das auf die Daten verweist.
Ausnahmen
Die Länge von name 0 ist null.
-oder-
Die Größe von data ist kleiner oder gleich Null oder größer als oder gleich 0x3f0000.
name oder data ist null.
CreateGlobalFunctions() wurde zuvor aufgerufen.
Beispiele
Im folgenden Beispiel wird die DefineInitializedData Methode verwendet, um ein initialisiertes Datenfeld im .sdata Abschnitt der portablen ausführbaren Datei (PORTABLE Ausführbare Datei, PE) zu definieren.
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()
Hinweise
Static wird automatisch in attributes.
Die von dieser Methode definierten Daten werden erst erstellt, wenn die CreateGlobalFunctions Methode aufgerufen wird.