Freigeben über


IMetaDataEmit-Schnittstelle

Aktualisiert: November 2007

Stellt Methoden bereit, um Metadaten über die Assembly im momentan definierten Bereich zu erstellen, zu ändern und zu speichern. Die Metadaten können im Arbeitsspeicher oder auf einem Datenträger gespeichert werden.

interface IMetaDataEmit : IUnknown {
        
    HRESULT ApplyEditAndContinue ( 
        [in]  IUnknown    *pImport
    );
        
    HRESULT DefineCustomAttribute ( 
        [in]  mdToken     tkObj, 
        [in]  mdToken     tkType, 
        [in]  void const  *pCustomAttribute, 
        [in]  ULONG       cbCustomAttribute, 
        [out] mdCustomAttribute *pcv 
    );
        
    HRESULT DefineEvent (    
        [in]  mdTypeDef   td, 
                [in]  LPCWSTR     szEvent, 
        [in]  DWORD       dwEventFlags, 
                [in]  mdToken     tkEventType, 
        [in]  mdMethodDef mdAddOn, 
        [in]  mdMethodDef mdRemoveOn, 
        [in]  mdMethodDef mdFire, 
        [in]  mdMethodDef rmdOtherMethods[], 
        [out] mdEvent     *pmdEvent 
    );
        
    HRESULT DefineField ( 
        [in]  mdTypeDef   td, 
                [in]  LPCWSTR     szName, 
        [in]  DWORD       dwFieldFlags, 
                [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [in]  DWORD       dwCPlusTypeFlag, 
        [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [out] mdFieldDef  *pmd 
    );
        
    HRESULT DefineImportMember ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue,
        [in]  IMetaDataImport *pImport, 
        [in]  mdToken     mbMember, 
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [in]  mdToken     tkParent, 
        [out] mdMemberRef *pmr 
    );
        
    HRESULT DefineImportType ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue,  
        [in]  IMetaDataImport *pImport, 
        [in]  mdTypeDef   tdImport, 
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [out] mdTypeRef   *ptr
    );
        
    HRESULT DefineMemberRef ( 
        [in]  mdToken     tkImport, 
        [in]  LPCWSTR     szName, 
        [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [out] mdMemberRef *pmr 
    );
        
    HRESULT DefineMethod (    
        [in]  mdTypeDef   td, 
        [in]  LPCWSTR     szName, 
        [in]  DWORD       dwMethodFlags, 
        [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [in]  ULONG       ulCodeRVA, 
        [in]  DWORD       dwImplFlags, 
        [out] mdMethodDef *pmd
    );
        
    HRESULT DefineMethodImpl ( 
        [in]  mdTypeDef   td, 
        [in]  mdToken     tkBody, 
        [in]  mdToken     tkDecl
    );
        
    HRESULT DefineModuleRef (   
        [in]  LPCWSTR     szName, 
        [out] mdModuleRef *pmur 
    );
        
    HRESULT DefineNestedType ( 
        [in]  LPCWSTR     szTypeDef,
        [in]  DWORD       dwTypeDefFlags, 
        [in]  mdToken     tkExtends, 
        [in]  mdToken     rtkImplements[], 
        [in]  mdTypeDef   tdEncloser, 
        [out] mdTypeDef   *ptd
    );
        
    HRESULT DefineParam (
        [in]  mdMethodDef md, 
        [in]  ULONG       ulParamSeq, 
        [in]  LPCWSTR     szName, 
                [in]  DWORD       dwParamFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue,
        [in]  ULONG       cchValue, 
        [out] mdParamDef  *ppd 
    );
        
    HRESULT DefinePermissionSet (    
        [in]  mdToken     tk, 
        [in]  DWORD       dwAction, 
        [in]  void const  *pvPermission, 
        [in]  ULONG       cbPermission, 
        [out] mdPermission *ppm 
    );
        
    HRESULT DefinePinvokeMap ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwMappingFlags, 
        [in]  LPCWSTR     szImportName, 
        [in]  mdModuleRef mrImportDLL 
    );
        
    HRESULT DefineProperty ( 
        [in]  mdTypeDef   td, 
        [in]  LPCWSTR     szProperty, 
                [in]  DWORD       dwPropFlags, 
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [in]  mdMethodDef mdSetter, 
        [in]  mdMethodDef mdGetter, 
        [in]  mdMethodDef rmdOtherMethods[], 
        [out] mdProperty  *pmdProp 
    );
        
    HRESULT DefineSecurityAttributeSet ( 
        [in]  mdToken     tkObj, 
        [in]  COR_SECATTR rSecAttrs[], 
        [in]  ULONG       cSecAttrs, 
        [out] ULONG       *pulErrorAttr 
    );
        
    HRESULT DefineTypeDef ( 
                [in]  LPCWSTR     szTypeDef, 
        [in]  DWORD       dwTypeDefFlags, 
                [in]  mdToken     tkExtends, 
        [in]  mdToken     rtkImplements[], 
        [out] mdTypeDef   *ptd
    );
        
    HRESULT DefineTypeRefByName ( 
        [in]  mdToken     tkResolutionScope, 
        [in]  LPCWSTR     szName, 
        [out] mdTypeRef   *ptr 
    );
        
    HRESULT DefineUserString ( 
        [in]  LPCWSTR szString, 
        [in]  ULONG       cchString, 
        [out] mdString    *pstk 
    );
        
    HRESULT DeleteClassLayout (
        [in]  mdTypeDef   td
    );
        
    HRESULT DeleteFieldMarshal (
        [in]  mdToken     tk
    );
        
    HRESULT DeletePinvokeMap ( 
        [in]  mdToken     tk 
    );
        
    HRESULT DeleteToken ( 
        [in]  mdToken     tkObj 
    );
        
    HRESULT GetSaveSize (    
        [in]  CorSaveSize fSave,
        [out] DWORD       *pdwSaveSize
    );
        
    HRESULT GetTokenFromSig (   
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [out] mdSignature *pmsig 
    );
        
    HRESULT GetTokenFromTypeSpec ( 
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [out] mdTypeSpec *ptypespec 
    ); 
        
    HRESULT Merge ( 
        [in]  IMetaDataImport *pImport, 
        [in]  IMapToken   *pHostMapToken, 
        [in]  IUnknown    *pHandler 
    );
        
    HRESULT MergeEnd ();
        
    HRESULT Save ( 
        [in]  LPCWSTR     szFile, 
        [in]  DWORD       dwSaveFlags
    );
        
    HRESULT SaveToMemory (   
        [in]  void        *pbData, 
        [in]  ULONG       cbData 
    );
        
    HRESULT SaveToStream (   
        [in]  IStream     *pIStream,
        [in]  DWORD       dwSaveFlags
    );
        
    HRESULT SetClassLayout (   
        [in]  mdTypeDef   td, 
        [in]  DWORD       dwPackSize, 
        [in]  COR_FIELD_OFFSET rFieldOffsets[], 
        [in]  ULONG       ulClassSize 
    );
        
    HRESULT SetCustomAttributeValue ( 
        [in]  mdCustomAttribute pcv, 
        [in]  void const  *pCustomAttribute,  
        [in]  ULONG       cbCustomAttribute 
    );
        
    HRESULT SetEventProps (  
        [in]  mdEvent     ev, 
        [in]  DWORD       dwEventFlags, 
        [in]  mdToken     tkEventType, 
        [in]  mdMethodDef mdAddOn, 
        [in]  mdMethodDef mdRemoveOn, 
        [in]  mdMethodDef mdFire, 
        [in]  mdMethodDef rmdOtherMethods[] 
    );
        
    HRESULT SetFieldMarshal (    
        [in]  mdToken     tk, 
        [in]  PCCOR_SIGNATURE pvNativeType, 
        [in]  ULONG       cbNativeType 
    );
        
    HRESULT SetFieldProps (  
                [in]  mdFieldDef  fd, 
        [in]  DWORD       dwFieldFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue 
    );
        
    HRESULT SetFieldRVA ( 
        [in]  mdFieldDef  fd, 
        [in]  ULONG       ulRVA 
    );
        
    HRESULT SetHandler ( 
        [in]  IUnknown    *pUnk
    );
        
    HRESULT SetMethodProps ( 
        [in]  mdMethodDef md, 
        [in]  DWORD       dwMethodFlags,
        [in]  ULONG       ulCodeRVA, 
        [in]  DWORD       dwImplFlags 
    );
        
    HRESULT SetMethodImplFlags ( 
                [in]  mdMethodDef md, 
        [in]  DWORD       dwImplFlags 
        );
        
    HRESULT SetModuleProps ( 
        [in]  LPCWSTR     szName
    ); 
        
    HRESULT SetParamProps ( 
        [in]  mdParamDef  pd, 
        [in]  LPCWSTR     szName, 
        [in]  DWORD       dwParamFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
        [in]  void const  *pValue, 
        [in]  ULONG       cchValue 
    );
        
    HRESULT SetParent ( 
        [in]  mdMemberRef mr, 
        [in]  mdToken     tk 
    );
        
    HRESULT SetPermissionSetProps ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwAction, 
        [in]  void const  *pvPermission, 
        [in]  ULONG       cbPermission, 
        [out] mdPermission *ppm 
    );
        
    HRESULT SetPinvokeMap ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwMappingFlags,
        [in]  LPCWSTR     szImportName, 
        [in]  mdModuleRef mrImportDLL 
    );
        
    HRESULT SetPropertyProps ( 
        [in]  mdProperty  pr, 
                [in]  DWORD       dwPropFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [in]  mdMethodDef mdSetter, 
        [in]  mdMethodDef mdGetter, 
        [in]  mdMethodDef rmdOtherMethods[] 
    );
        
    HRESULT SetRVA ( 
        [in]  mdMethodDef md, 
        [in]  ULONG       ulRVA 
    );
        
    HRESULT SetTypeDefProps (
        [in]  mdTypeDef   td, 
                [in]  DWORD       dwTypeDefFlags, 
        [in]  mdToken     tkExtends, 
                [in]  mdToken     rtkImplements[] 
    );
        
    HRESULT TranslateSigWithScope ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue, 
        [in]  IMetaDataImport *import, 
        [in]  PCCOR_SIGNATURE pbSigBlob, 
        [in]  ULONG       cbSigBlob,
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [in]  IMetaDataEmit *emit, 
        [out] PCOR_SIGNATURE pvTranslatedSig, 
        [in]  ULONG       cbTranslatedSigMax, 
        [out] ULONG       *pcbTranslatedSig 
    );
        
};

Methoden

Methode

Beschreibung

IMetaDataEmit::ApplyEditAndContinue-Methode

Aktualisiert den aktuellen Assemblybereich mit den Änderungen, die im angegebenen pImport vorgenommen wurden.

IMetaDataEmit::DefineCustomAttribute-Methode

Erstellt eine Definition für ein benutzerdefiniertes Attribut mit der angegebenen Metadatensignatur, die dem angegebenen Objekt zugeordnet werden soll, und ruft ein Token für die betreffende benutzerdefinierte Attributdefinition ab.

IMetaDataEmit::DefineEvent-Methode

Erstellt eine Definition für ein Ereignis mit der angegebenen Metadatensignatur und ruft ein Token für die Ereignisdefinition ab.

IMetaDataEmit::DefineField-Methode

Erstellt eine Definition für ein Feld mit der angegebenen Metadatensignatur und ruft ein Token für die betreffende Felddefinition ab.

IMetaDataEmit::DefineImportMember-Methode

Erstellt eine Definition für einen Member eines Typs, der in einem Modul außerhalb des aktuellen Bereichs definiert wird und ruft ein Token für diese Verweisdefinition ab.

IMetaDataEmit::DefineImportType-Methode

Erstellt eine Definition für einen Verweis auf einen Typ, der in einem Modul außerhalb des aktuellen Bereichs definiert ist, und ruft ein Token für diese Referenzdefinition ab.

IMetaDataEmit::DefineMemberRef-Methode

Erstellt eine Definition für einen Verweis auf einen Member eines Moduls außerhalb des aktuellen Bereichs und ruft ein Token für diese Referenzdefinition ab.

IMetaDataEmit::DefineMethod-Methode

Erstellt eine Definition für eine Methode mit der angegebenen Signatur und gibt ein Token für diese Methodendefinition zurück.

IMetaDataEmit::DefineMethodImpl-Methode

Erstellt eine Definition für die Implementierung einer Methode, die von einer Schnittstelle geerbt wird, und gibt ein Token für die betreffende Definition der Methodenimplementierung zurück.

IMetaDataEmit::DefineModuleRef-Methode

Erstellt die Metadatensignatur für ein Modul mit dem angegebenen Namen.

IMetaDataEmit::DefineNestedType-Methode

Erstellt die Metadatensignatur einer Typdefinition und gibt ein mdTypeDef-Token für diesen Typ zurück. Gibt außerdem an, dass der definierte Typ ein Member des Typs ist, auf den tdEncloser verweist.

IMetaDataEmit::DefineParam-Methode

Erstellt für die Methode, auf die vom angegebenen Token verwiesen wird, eine Parameterdefinition mit der angegebenen Signatur und ruft ein Token für die Parameterdefinition ab.

IMetaDataEmit::DefinePermissionSet-Methode

Erstellt eine Definition für einen Berechtigungssatz mit der angegebenen Metadatensignatur und ruft ein Token für diese Berechtigungssatzdefinition ab.

IMetaDataEmit::DefinePinvokeMap-Methode

Legt Features der PInvoke-Signatur der Methode fest, auf die vom angegebenen Token verwiesen wird.

IMetaDataEmit::DefineProperty-Methode

Erstellt eine Eigenschaftendefinition für den angegebenen Typ mit dem angegebenen get-Methodenaccessor und dem set-Methodenaccessor und ruft ein Token für die betreffende Eigenschaftendefinition ab.

IMetaDataEmit::DefineSecurityAttributeSet-Methode

Erstellt eine Reihe von Sicherheitsberechtigungen, die an das Objekt angefügt werden, auf das das angegebene Token verweist.

IMetaDataEmit::DefineTypeDef-Methode

Erstellt eine Typdefinition für einen Common Language Runtime-Typ und ruft das Metadatentoken für die Typdefinition ab.

IMetaDataEmit::DefineTypeRefByName-Methode

Ruft ein Metadatentoken für einen Typ ab, der in einem anderen Modul außerhalb des aktuellen Bereichs definiert ist.

IMetaDataEmit::DefineUserString-Methode

Ruft ein Metadatentoken für das angegebene Zeichenfolgenliteral ab.

IMetaDataEmit::DeleteClassLayout-Methode

Zerstört die Metadatensignatur des Klassenlayouts für den Typ, auf den vom angegebenen Token verwiesen wird.

IMetaDataEmit::DeleteFieldMarshal-Methode

Zerstört die Metadatensignatur für das Marshalling von PInvoke des Objekts, auf das vom angegebenen Token verwiesen wird.

IMetaDataEmit::DeletePinvokeMap-Methode

Zerstört die Metadaten für die Zuordnung von PInvoke für das Objekt, auf das vom angegebenen Token verwiesen wird.

IMetaDataEmit::DeleteToken-Methode

Löscht das angegebene Token aus dem aktuellen Gültigkeitsbereich der Metadaten.

IMetaDataEmit::GetSaveSize-Methode

Ruft die geschätzte binäre Größe der Assembly im aktuellen Gültigkeitsbereich ab.

IMetaDataEmit::GetTokenFromSig-Methode

Ruft ein Token für die angegebene Metadatensignatur ab.

IMetaDataEmit::GetTokenFromTypeSpec-Methode

Ruft ein Metadatentoken für den Typ mit der angegebenen Metadatensignatur ab.

IMetaDataEmit::Merge-Methode

Fügt den angegebenen importierten Bereich zur Liste der Bereiche hinzu, die zusammengeführt werden sollen.

IMetaDataEmit::MergeEnd-Methode

Führt sämtliche Metadatenbereiche, die durch einen oder mehrere vorausgehende Aufrufe von IMetaDataEmit::Merge angegeben wurden, im aktuellen Bereich zusammen.

IMetaDataEmit::Save-Methode

Speichert alle Metadaten im aktuellen Bereich in die Datei an der angegebenen Adresse.

IMetaDataEmit::SaveToMemory-Methode

Speichert alle Metadaten im aktuellen Gültigkeitsbereich in den angegebenen Bereich des Arbeitsspeichers.

IMetaDataEmit::SaveToStream-Methode

Speichert alle Metadaten im aktuellen Bereich in den angegebenen IStream.

IMetaDataEmit::SetClassLayout-Methode

Ruft die Klassenlayoutsignatur eines durch einen vorherigen Aufruf von IMetaDataEmit::DefineTypeDef definierten Typs ab oder aktualisiert sie.

IMetaDataEmit::SetCustomAttributeValue-Methode

Legt den Wert eines benutzerdefinierten Attributs fest, das durch einen früheren Aufruf von IMetaDataEmit::DefineCustomAttribute definiert wurde, oder aktualisiert diesen Wert.

IMetaDataEmit::SetEventProps-Methode

Legt das angegebene Feature eines Ereignisses, das durch einen vorausgehenden Aufruf von IMetaDataEmit::DefineEvent definiert wurde, fest oder aktualisiert es.

IMetaDataEmit::SetFieldMarshal-Methode

Legt die PInvoke-Marshallinginformationen für das Feld, die Methodenrückgabe oder den Methodenparameter fest, auf vom angegebenen Token verwiesen wird.

IMetaDataEmit::SetFieldProps-Methode

Legt den Standardwert für das Feld fest, auf das das angegebene Feldtoken verweist, oder aktualisiert ihn.

IMetaDataEmit::SetFieldRVA-Methode

Legt einen globalen Variablenwert für die relative virtuelle Adresse des Felds fest, auf das vom angegebenen Token verwiesen wird.

IMetaDataEmit::SetHandler-Methode

Legt die Methode fest, auf die von dem angegeben IUnknown-Zeiger als Benachrichtigungsrückruf für Neuzuordnungen von Tokens verwiesen wurde.

IMetaDataEmit::SetMethodImplFlags-Methode

Legt die Metadatensignatur der geerbten Methodenimplementierung, auf die das angegebene Token verweist, fest oder aktualisiert sie.

IMetaDataEmit::SetMethodProps-Methode

Legt das unter der angegebenen relativen virtuellen Adresse gespeicherte Feature einer Methode fest, die durch einen vorherigen Aufruf von IMetaDataEmit::DefineMethod definiert wurde, oder aktualisiert dieses.

IMetaDataEmit::SetModuleProps-Methode

Aktualisiert Verweise auf ein Modul, die bei einem vorherigen Aufruf von IMetaDataEmit::DefineModuleRef definiert wurden.

IMetaDataEmit::SetParamProps-Methode

Legt die Features eines Methodenparameters fest, der durch einen vorherigen Aufruf von IMetaDataEmit::DefineParam definiert wurde, bzw. ändert diese.

IMetaDataEmit::SetParent-Methode

Legt fest, dass der angegebene Member, wie er in einem vorhergehenden Aufruf von IMetaDataEmit::DefineMemberRef definiert wurde, ein Member des angegebenen Typs ist, wie er in einem vorhergehenden Aufruf von IMetaDataEmit::DefineTypeDef definiert wurde.

IMetaDataEmit::SetPermissionSetProps-Methode

Legt die Features der Metadatensignatur eines Berechtigungssatzes fest, der durch einen vorherigen Aufruf von IMetaDataEmit::DefinePermissionSet definiert wurde, bzw. aktualisiert diese.

IMetaDataEmit::SetPinvokeMap-Methode

Legt die Features der PInvoke-Signatur einer Methode fest oder ändert diese gemäß der Definition eines früheren Aufrufs an IMetaDataEmit::DefinePinvokeMap.

IMetaDataEmit::SetPropertyProps-Methode

Legt die in Metadaten gespeicherten Features für eine Eigenschaft fest, die zuvor durch einen Aufruf vonIMetaDataEmit::DefineProperty definiert wurde.

IMetaDataEmit::SetRVA-Methode

Legt die relative virtuelle Adresse der angegebenen Methode fest.

IMetaDataEmit::SetTypeDefProps-Methode

Legt Features eines Typs fest, der bei einem vorherigen Aufruf von IMetaDataEmit::DefineTypeDef definiert wurde.

IMetaDataEmit::TranslateSigWithScope-Methode

Importiert eine Assembly in den aktuellen Bereich und ruft eine neue Metadatensignatur für den zusammengeführten Bereich ab.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: Cor.h

Bibliothek: als Ressource in MsCorEE.dll verwendet

.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Siehe auch

Referenz

IMetaDataEmit2-Schnittstelle

Weitere Ressourcen

Metadatenschnittstellen