ICeeFileGen-Klasse
Stellt Funktionen zum Erstellen einer nativen portablen ausführbaren Datei (PE) bereit. Die Schnittstelle wird in der Regel von Compilern verwendet, um ihre kompilierte ausführbare Ausgabe zu generieren.
Hinweis
ICeeFileGen
unterstützt die .NET Framework-Infrastruktur und ist nicht für eine direkte Verwendung vom Code aus vorgesehen.
Diese Schnittstelle ist veraltet und wird in einer zukünftigen Version entfernt.
Syntax
class ICeeFileGen {
public:
virtual HRESULT CreateCeeFile(HCEEFILE *ceeFile);
virtual HRESULT EmitMetaData (HCEEFILE ceeFile,
IMetaDataEmit *emitter, mdScope scope);
virtual HRESULT EmitLibraryName (HCEEFILE ceeFile,
IMetaDataEmit *emitter, mdScope scope);
virtual HRESULT EmitMethod ();
virtual HRESULT GetMethodRVA (HCEEFILE ceeFile,
ULONG codeOffset, ULONG *codeRVA);
virtual HRESULT EmitSignature ();
virtual HRESULT EmitString (HCEEFILE ceeFile,
__in LPWSTR strValue, ULONG *strRef);
virtual HRESULT GenerateCeeFile (HCEEFILE ceeFile);
virtual HRESULT SetOutputFileName (HCEEFILE ceeFile,
__in LPWSTR outputFileName);
virtual HRESULT GetOutputFileName (HCEEFILE ceeFile,
__out LPWSTR *outputFileName);
virtual HRESULT SetResourceFileName (HCEEFILE ceeFile,
__in LPWSTR resourceFileName);
virtual HRESULT GetResourceFileName (HCEEFILE ceeFile,
__out LPWSTR *resourceFileName);
virtual HRESULT SetImageBase(HCEEFILE ceeFile, size_t imageBase);
virtual HRESULT SetSubsystem(HCEEFILE ceeFile, DWORD subsystem,
DWORD major, DWORD minor);
virtual HRESULT SetEntryClassToken ();
virtual HRESULT GetEntryClassToken ();
virtual HRESULT SetEntryPointDescr ();
virtual HRESULT GetEntryPointDescr ();
virtual HRESULT SetEntryPointFlags ();
virtual HRESULT GetEntryPointFlags ();
virtual HRESULT SetDllSwitch (HCEEFILE ceeFile, BOOL dllSwitch);
virtual HRESULT GetDllSwitch (HCEEFILE ceeFile, BOOL *dllSwitch);
virtual HRESULT SetLibraryName (HCEEFILE ceeFile,
__in LPWSTR LibraryName);
virtual HRESULT GetLibraryName (HCEEFILE ceeFile,
__out LPWSTR *LibraryName);
virtual HRESULT SetLibraryGuid (HCEEFILE ceeFile,
__in LPWSTR LibraryGuid);
virtual HRESULT DestroyCeeFile(HCEEFILE *ceeFile);
virtual HRESULT GetSectionCreate (HCEEFILE ceeFile,
const char *name, DWORD flags, HCEESECTION *section);
virtual HRESULT GetIlSection (HCEEFILE ceeFile,
HCEESECTION *section);
virtual HRESULT GetRdataSection (HCEEFILE ceeFile,
HCEESECTION *section);
virtual HRESULT GetSectionDataLen (HCEESECTION section,
ULONG *dataLen);
virtual HRESULT GetSectionBlock (HCEESECTION section, ULONG len,
ULONG align=1, void **ppBytes=0);
virtual HRESULT TruncateSection (HCEESECTION section, ULONG len);
virtual HRESULT AddSectionReloc (HCEESECTION section,
ULONG offset, HCEESECTION relativeTo,
CeeSectionRelocType relocType);
virtual HRESULT SetSectionDirectoryEntry (HCEESECTION section,
ULONG num);
virtual HRESULT CreateSig ();
virtual HRESULT AddSigArg ();
virtual HRESULT SetSigReturnType ();
virtual HRESULT SetSigCallingConvention ();
virtual HRESULT DeleteSig ();
virtual HRESULT SetEntryPoint (HCEEFILE ceeFile,
mdMethodDef method);
virtual HRESULT GetEntryPoint (HCEEFILE ceeFile,
mdMethodDef *method);
virtual HRESULT SetComImageFlags (HCEEFILE ceeFile, DWORD mask);
virtual HRESULT GetComImageFlags (HCEEFILE ceeFile, DWORD *mask);
virtual HRESULT GetIMapTokenIface(HCEEFILE ceeFile,
IMetaDataEmit *emitter, IUnknown **pIMapToken);
virtual HRESULT SetDirectoryEntry (HCEEFILE ceeFile,
HCEESECTION section, ULONG num, ULONG size, ULONG offset = 0);
virtual HRESULT EmitMetaDataEx (HCEEFILE ceeFile,
IMetaDataEmit *emitter);
virtual HRESULT EmitLibraryNameEx (HCEEFILE ceeFile,
IMetaDataEmit *emitter);
virtual HRESULT GetIMapTokenIfaceEx(HCEEFILE ceeFile,
IMetaDataEmit *emitter, IUnknown **pIMapToken);
virtual HRESULT EmitMacroDefinitions(HCEEFILE ceeFile,
void *pData, DWORD cData);
virtual HRESULT CreateCeeFileFromICeeGen(ICeeGen *pFromICeeGen,
HCEEFILE *ceeFile, DWORD createFlags =
ICEE_CREATE_FILE_PURE_IL);
virtual HRESULT SetManifestEntry(HCEEFILE ceeFile, ULONG size,
ULONG offset);
virtual HRESULT SetEnCRVABase(HCEEFILE ceeFile, ULONG dataBase,
ULONG rdataBase);
virtual HRESULT GenerateCeeMemoryImage (HCEEFILE ceeFile,
void **ppImage);
virtual HRESULT ComputeSectionOffset(HCEESECTION section,
__in char *ptr, unsigned *offset);
virtual HRESULT ComputeOffset(HCEEFILE file, __in char *ptr,
HCEESECTION *pSection, unsigned *offset);
virtual HRESULT GetCorHeader(HCEEFILE ceeFile,
IMAGE_COR20_HEADER **header);
virtual HRESULT LinkCeeFile (HCEEFILE ceeFile);
virtual HRESULT FixupCeeFile (HCEEFILE ceeFile);
virtual HRESULT GetSectionRVA (HCEESECTION section, ULONG *rva);
virtual HRESULT ComputeSectionPointer(HCEESECTION section,
ULONG offset, __out char **ptr);
virtual HRESULT SetObjSwitch (HCEEFILE ceeFile, BOOL objSwitch);
virtual HRESULT GetObjSwitch (HCEEFILE ceeFile, BOOL *objSwitch);
virtual HRESULT SetVTableEntry(HCEEFILE ceeFile, ULONG size,
ULONG offset);
virtual HRESULT SetStrongNameEntry(HCEEFILE ceeFile, ULONG size,
ULONG offset);
virtual HRESULT EmitMetaDataAt (HCEEFILE ceeFile,
IMetaDataEmit *emitter, HCEESECTION section, DWORD offset,
BYTE* buffer, unsigned buffLen);
virtual HRESULT GetFileTimeStamp (HCEEFILE ceeFile,
DWORD *pTimeStamp);
virtual HRESULT AddNotificationHandler(HCEEFILE ceeFile,
IUnknown *pHandler);
virtual HRESULT SetFileAlignment(HCEEFILE ceeFile,
ULONG fileAlignment);
virtual HRESULT ClearComImageFlags (HCEEFILE ceeFile, DWORD mask);
virtual HRESULT CreateCeeFileEx(HCEEFILE *ceeFile,
ULONG createFlags);
virtual HRESULT SetImageBase64(HCEEFILE ceeFile,
ULONGLONG imageBase);
virtual HRESULT GetHeaderInfo (HCEEFILE ceeFile,
PIMAGE_NT_HEADERS *ppNtHeaders,
PIMAGE_SECTION_HEADER *ppSections, ULONG *pNumSections);
virtual HRESULT CreateCeeFileEx2(HCEEFILE *ceeFile,
ULONG createFlags, LPCWSTR seedFileName = NULL);
virtual HRESULT SetVTableEntry64(HCEEFILE ceeFile, ULONG size,
void* ptr);
};
Requirements (Anforderungen)
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: ICeeFileGen.h
.NET Framework-Version: 1.0
Weitere Informationen
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.