Changeset 2861 for trunk/kLdr/kLdr.h


Ignore:
Timestamp:
Nov 10, 2006, 4:04:42 AM (19 years ago)
Author:
bird
Message:

Put the PE module interpreter thru the wringer and learnt how much the window file mapping API sucks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/kLdr.h

    r2859 r2861  
    8787# define PRI_KLDRSIZE    "llx"
    8888#endif
     89
     90/** Pointer to a loader segment. */
     91typedef struct KLDRSEG *PKLDRSEG;
     92/** Pointer to a loader segment. */
     93typedef const struct KLDRSEG *PCKLDRSEG;
     94
    8995
    9096
     
    167173    /** @copydoc kLdrRdrPageSize */
    168174    size_t  (* pfnPageSize)(PKLDRRDR pRdr);
    169     /** @copydoc kLdrRdrPrepare */
    170     int     (* pfnPrepare)(PKLDRRDR pRdr, void **ppv, size_t cb, unsigned fFixed);
    171175    /** @copydoc kLdrRdrMap */
    172     int     (* pfnMap)(PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt, off_t offFile, size_t cbFile);
    173     /** @copydoc kLdrRdrRefreshMap */
    174     int     (* pfnRefreshMap)(PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt, off_t offFile, size_t cbFile);
     176    int     (* pfnMap)(     PKLDRRDR pRdr, void **ppvBase, uint32_t cSegments, PCKLDRSEG paSegments, unsigned fFixed);
     177    /** @copydoc kLdrRdrRefresh */
     178    int     (* pfnRefresh)( PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments);
    175179    /** @copydoc kLdrRdrProtect */
    176     int     (* pfnProtect)(PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt);
     180    int     (* pfnProtect)( PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect);
    177181    /** @copydoc kLdrRdrUnmap */
    178     int     (* pfnUnmap)(PKLDRRDR pRdr, void *pv, size_t cb);
    179     /** @copydoc kLdrRdrUnprepare */
    180     int     (* pfnUnprepare)(PKLDRRDR pRdr, void *pv, size_t cb);
     182    int     (* pfnUnmap)(   PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments);
    181183    /** @copydoc kLdrRdrDone */
    182     void    (* pfnDone)(PKLDRRDR pRdr);
     184    void    (* pfnDone)(    PKLDRRDR pRdr);
    183185    /** The usual non-zero dummy that makes sure we've initialized all members. */
    184186    uint32_t u32Dummy;
     
    215217const char *kLdrRdrName(PKLDRRDR pRdr);
    216218size_t  kLdrRdrPageSize(PKLDRRDR pRdr);
    217 int     kLdrRdrPrepare( PKLDRRDR pRdr, void **ppv, size_t cb, unsigned fFixed);
    218 int     kLdrRdrMap(     PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt, off_t offFile, size_t cbFile);
    219 int     kLdrRdrRefreshMap(PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt, off_t offFile, size_t cbFile);
    220 int     kLdrRdrProtect( PKLDRRDR pRdr, void *pv, size_t cb, KLDRPROT enmProt);
    221 int     kLdrRdrUnmap(   PKLDRRDR pRdr, void *pv, size_t cb);
    222 int     kLdrRdrUnprepare(PKLDRRDR pRdr, void *pv, size_t cb);
     219int     kLdrRdrMap(     PKLDRRDR pRdr, void **ppvBase, uint32_t cSegments, PCKLDRSEG paSegments, unsigned fFixed);
     220int     kLdrRdrRefresh( PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments);
     221int     kLdrRdrProtect( PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect);
     222int     kLdrRdrUnmap(   PKLDRRDR pRdr, void *pvBase, uint32_t cSegments, PCKLDRSEG paSegments);
    223223void    kLdrRdrDone(    PKLDRRDR pRdr);
    224224
     
    430430    uintptr_t       MapAddress;
    431431} KLDRSEG;
    432 /** Pointer to a loader segment. */
    433 typedef KLDRSEG *PKLDRSEG;
    434 /** Pointer to a loader segment. */
    435 typedef const KLDRSEG *PCKLDRSEG;
    436432
    437433
     
    10291025/** Thread attach failed. */
    10301026#define KLDR_ERR_THREAD_ATTACH_FAILED                       (KLDR_ERR_BASE + 57)
     1027/** The file reader can't take more concurrent mappings. */
     1028#define KLDR_ERR_TOO_MANY_MAPPINGS                          (KLDR_ERR_BASE + 58)
    10311029
    10321030
Note: See TracChangeset for help on using the changeset viewer.