home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 40 / IOPROG_40.ISO / SOFT / NETFrameworkSDK.exe / comsdk.cab / iceefilegen.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-23  |  6.8 KB  |  142 lines

  1. /*****************************************************************************
  2.  **                                                                         **
  3.  ** ICeeFileGen.h - code generator interface.                               **
  4.  **                                                                         **
  5.  ** Copyright (c) 1996-2000 Microsoft Corporation.  All Rights Reserved.    **
  6.  **                                                                         **
  7.  *****************************************************************************/
  8.  
  9.  
  10. #ifndef _ICEEFILEGEN_H_
  11. #define _ICEEFILEGEN_H_
  12.  
  13. #include <ole2.h>
  14. #include "cor.h"
  15.  
  16. class ICeeFileGen;
  17.  
  18. typedef void *HCEEFILE;
  19.  
  20. HRESULT __stdcall CreateICeeFileGen(ICeeFileGen **ceeFileGen); // call this to instantiate
  21. HRESULT __stdcall DestroyICeeFileGen(ICeeFileGen **ceeFileGen); // call this to delete
  22.  
  23. class ICeeFileGen {
  24.   public:
  25.     virtual HRESULT CreateCeeFile(HCEEFILE *ceeFile); // call this to instantiate
  26.     virtual HRESULT EmitMetaData (HCEEFILE ceeFile, IMetaDataEmit *emitter, mdScope scope);
  27.     virtual HRESULT EmitLibraryName (HCEEFILE ceeFile, IMetaDataEmit *emitter, mdScope scope);
  28.     virtual HRESULT EmitMethod (); //@todo: remove
  29.     virtual HRESULT GetMethodRVA (HCEEFILE ceeFile, ULONG codeOffset, ULONG *codeRVA); 
  30.     virtual HRESULT EmitSignature (); //@todo: remove
  31.  
  32.     virtual HRESULT EmitString (HCEEFILE ceeFile,LPWSTR strValue, ULONG *strRef);
  33.     virtual HRESULT GenerateCeeFile (HCEEFILE ceeFile);
  34.  
  35.     virtual HRESULT SetOutputFileName (HCEEFILE ceeFile, LPWSTR outputFileName);
  36.     virtual HRESULT GetOutputFileName (HCEEFILE ceeFile, LPWSTR *outputFileName);
  37.  
  38.     virtual HRESULT SetResourceFileName (HCEEFILE ceeFile, LPWSTR resourceFileName);
  39.     virtual HRESULT GetResourceFileName (HCEEFILE ceeFile, LPWSTR *resourceFileName);
  40.  
  41.     virtual HRESULT SetImageBase(HCEEFILE ceeFile, size_t imageBase);
  42.  
  43.     virtual HRESULT SetSubsystem(HCEEFILE ceeFile, DWORD subsystem, DWORD major, DWORD minor);
  44.  
  45.     virtual HRESULT SetEntryClassToken (); //@todo: remove
  46.     virtual HRESULT GetEntryClassToken (); //@todo: remove
  47.  
  48.     virtual HRESULT SetEntryPointDescr (); //@todo: remove
  49.     virtual HRESULT GetEntryPointDescr (); //@todo: remove
  50.  
  51.     virtual HRESULT SetEntryPointFlags (); //@todo: remove
  52.     virtual HRESULT GetEntryPointFlags (); //@todo: remove
  53.  
  54.     virtual HRESULT SetDllSwitch (HCEEFILE ceeFile, BOOL dllSwitch);
  55.     virtual HRESULT GetDllSwitch (HCEEFILE ceeFile, BOOL *dllSwitch);
  56.  
  57.     virtual HRESULT SetLibraryName (HCEEFILE ceeFile, LPWSTR LibraryName);
  58.     virtual HRESULT GetLibraryName (HCEEFILE ceeFile, LPWSTR *LibraryName);
  59.  
  60.     virtual HRESULT SetLibraryGuid (HCEEFILE ceeFile, LPWSTR LibraryGuid);
  61.  
  62.     virtual HRESULT DestroyCeeFile(HCEEFILE *ceeFile); // call this to instantiate
  63.  
  64.     virtual HRESULT GetSectionCreate (HCEEFILE ceeFile, const char *name, DWORD flags, HCEESECTION *section);
  65.     virtual HRESULT GetIlSection (HCEEFILE ceeFile, HCEESECTION *section);
  66.     virtual HRESULT GetRdataSection (HCEEFILE ceeFile, HCEESECTION *section);
  67.  
  68.     virtual HRESULT GetSectionDataLen (HCEESECTION section, ULONG *dataLen);
  69.     virtual HRESULT GetSectionBlock (HCEESECTION section, ULONG len, ULONG align=1, void **ppBytes=0);
  70.     virtual HRESULT TruncateSection (HCEESECTION section, ULONG len);
  71.     virtual HRESULT AddSectionReloc (HCEESECTION section, ULONG offset, HCEESECTION relativeTo, CeeSectionRelocType relocType);
  72.  
  73.     // deprecated: use SetDirectoryEntry instead
  74.     virtual HRESULT SetSectionDirectoryEntry (HCEESECTION section, ULONG num);
  75.  
  76.     virtual HRESULT CreateSig (); //@todo: Remove
  77.     virtual HRESULT AddSigArg (); //@todo: Remove
  78.     virtual HRESULT SetSigReturnType (); //@todo: Remove
  79.     virtual HRESULT SetSigCallingConvention (); //@todo: Remove
  80.     virtual HRESULT DeleteSig (); //@todo: Remove
  81.  
  82.     virtual HRESULT SetEntryPoint (HCEEFILE ceeFile, mdMethodDef method);
  83.     virtual HRESULT GetEntryPoint (HCEEFILE ceeFile, mdMethodDef *method);
  84.  
  85.     virtual HRESULT SetComImageFlags (HCEEFILE ceeFile, DWORD mask);
  86.     virtual HRESULT GetComImageFlags (HCEEFILE ceeFile, DWORD *mask);
  87.  
  88.     // get IMapToken interface for tracking mapped tokens
  89.     virtual HRESULT GetIMapTokenIface(HCEEFILE ceeFile, IMetaDataEmit *emitter, IUnknown **pIMapToken);
  90.     virtual HRESULT SetDirectoryEntry (HCEEFILE ceeFile, HCEESECTION section, ULONG num, ULONG size, ULONG offset = 0);
  91.  
  92.     virtual HRESULT EmitMetaDataEx (HCEEFILE ceeFile, IMetaDataEmit *emitter); // @todo remove, add default param to one below
  93.     virtual HRESULT EmitLibraryNameEx (HCEEFILE ceeFile, IMetaDataEmit *emitter);
  94.     virtual HRESULT GetIMapTokenIfaceEx(HCEEFILE ceeFile, IMetaDataEmit *emitter, IUnknown **pIMapToken);
  95.  
  96.     virtual HRESULT EmitMacroDefinitions(HCEEFILE ceeFile, void *pData, DWORD cData);
  97.     virtual HRESULT CreateCeeFileFromICeeGen(ICeeGen *pFromICeeGen, HCEEFILE *ceeFile); // call this to instantiate
  98.  
  99.     virtual HRESULT SetManifestEntry(HCEEFILE ceeFile, ULONG size, ULONG offset);
  100.  
  101.     virtual HRESULT SetEnCRVABase(HCEEFILE ceeFile, ULONG dataBase, ULONG rdataBase);
  102.     virtual HRESULT GenerateCeeMemoryImage (HCEEFILE ceeFile, void **ppImage);
  103.  
  104.     virtual HRESULT ComputeSectionOffset(HCEESECTION section, char *ptr,
  105.                                          unsigned *offset);
  106.  
  107.     virtual HRESULT ComputeOffset(HCEEFILE file, char *ptr,
  108.                                   HCEESECTION *pSection, unsigned *offset);
  109.  
  110.     virtual HRESULT GetCorHeader(HCEEFILE ceeFile, 
  111.                                  IMAGE_COR20_HEADER **header);
  112.  
  113.     virtual HRESULT LinkCeeFile (HCEEFILE ceeFile);
  114.     virtual HRESULT FixupCeeFile (HCEEFILE ceeFile);
  115.  
  116.     virtual HRESULT GetSectionRVA (HCEESECTION section, ULONG *rva);
  117.  
  118.     virtual HRESULT ComputeSectionPointer(HCEESECTION section, ULONG offset,
  119.                                           char **ptr);
  120.  
  121.     virtual HRESULT SetObjSwitch (HCEEFILE ceeFile, BOOL objSwitch);
  122.     virtual HRESULT GetObjSwitch (HCEEFILE ceeFile, BOOL *objSwitch);
  123.     virtual HRESULT SetVTableEntry(HCEEFILE ceeFile, ULONG size, ULONG offset);
  124.  
  125.     virtual HRESULT SetStrongNameEntry(HCEEFILE ceeFile, ULONG size, ULONG offset);
  126.  
  127.         // Emit the data.  If 'section != 0, it will put the data in 'buffer'.  This
  128.         // buffer is assumed to be in 'section' at 'offset' and of size 'buffLen'
  129.         // (should use GetSaveSize to insure that buffer is big enough
  130.     virtual HRESULT EmitMetaDataAt (HCEEFILE ceeFile, IMetaDataEmit *emitter, HCEESECTION section, DWORD offset, BYTE* buffer, unsigned buffLen);
  131.  
  132.     virtual HRESULT GetFileTimeStamp (HCEEFILE ceeFile, time_t *pTimeStamp);
  133.  
  134.     // Add a notification handler. If it implements an interface that
  135.     // the ICeeFileGen understands, S_OK is returned. Otherwise,
  136.     // E_NOINTERFACE.
  137.     virtual HRESULT AddNotificationHandler(HCEEFILE ceeFile,
  138.                                            IUnknown *pHandler);
  139. };
  140.  
  141. #endif
  142.