Changeset 2891 for trunk/kLdr/kLdr.h
- Timestamp:
- Nov 21, 2006, 10:40:45 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdr.h
r2889 r2891 603 603 /** Forwarder symbol. */ 604 604 #define KLDRSYMKIND_FORWARDER 0x00000200 605 /** Request a flat symbol address. */ 606 #define KLDRSYMKIND_REQ_FLAT 0x00000000 607 /** Request a segmented symbol address. */ 608 #define KLDRSYMKIND_REQ_SEGMENTED 0x40000000 605 609 /** @} */ 606 610 … … 621 625 * @param iImport The import module ordinal number or NIL_KLDRMOD_IMPORT. 622 626 * @param iSymbol The symbol ordinal number or NIL_KLDRMOD_SYM_ORDINAL. 623 * @param pszSymbol The symbol name. Can be NULL if iSymbol isn't nil. 627 * @param pchSymbol The symbol name. Can be NULL if iSymbol isn't nil. Doesn't have to be null-terminated. 628 * @param cchSymbol The length of the symbol. 629 * @param pszVersion The symbol version. NULL if not versioned. 624 630 * @param puValue Where to store the symbol value. 625 631 * @param pfKind Where to store the symbol kind flags. 626 632 * @param pvUser The user parameter specified to the relocation function. 627 633 */ 628 typedef int FNKLDRMODGETIMPORT(PKLDRMOD pMod, uint32_t iImport, uint32_t iSymbol, const char *p szSymbol,629 PKLDRADDR puValue, uint32_t *pfKind, void *pvUser);634 typedef int FNKLDRMODGETIMPORT(PKLDRMOD pMod, uint32_t iImport, uint32_t iSymbol, const char *pchSymbol, size_t cchSymbol, 635 const char *pszVersion, PKLDRADDR puValue, uint32_t *pfKind, void *pvUser); 630 636 /** Pointer to a import callback. */ 631 637 typedef FNKLDRMODGETIMPORT *PFNKLDRMODGETIMPORT; … … 639 645 * @param pMod The module which symbols are being enumerated.s 640 646 * @param iSymbol The symbol ordinal number or NIL_KLDRMOD_SYM_ORDINAL. 641 * @param p szSymbol The symbol name. This can be NULL if there is a symbol ordinal.647 * @param pchSymbol The symbol name. This can be NULL if there is a symbol ordinal. 642 648 * This can also be an empty string if the symbol doesn't have a name 643 649 * or it's name has been stripped. 650 * Important, this doesn't have to be a null-terminated string. 651 * @param cchSymbol The length of the symbol. 652 * @param pszVersion The symbol version. NULL if not versioned. 644 653 * @param uValue The symbol value. 645 654 * @param fKind The symbol kind flags. 646 655 * @param pvUser The user parameter specified to kLdrModEnumSymbols(). 647 656 */ 648 typedef int FNKLDRMODENUMSYMS(PKLDRMOD pMod, uint32_t iSymbol, const char *p szSymbol,657 typedef int FNKLDRMODENUMSYMS(PKLDRMOD pMod, uint32_t iSymbol, const char *pchSymbol, size_t cchSymbol, const char *pszVersion, 649 658 KLDRADDR uValue, uint32_t fKind, void *pvUser); 650 659 /** Pointer to a symbol enumerator callback. */ … … 672 681 typedef int FNKLDRENUMDBG(PKLDRMOD pMod, uint32_t iDbgInfo, KLDRDBGINFOTYPE enmType, int16_t iMajorVer, int16_t iMinorVer, 673 682 off_t offFile, KLDRADDR LinkAddress, KLDRSIZE cb, const char *pszExtFile, void *pvUser); 674 /** Pointer to a debug info enum berator callback. */683 /** Pointer to a debug info enumerator callback. */ 675 684 typedef FNKLDRENUMDBG *PFNKLDRENUMDBG; 685 686 /** 687 * Resource enumerator callback. 688 * 689 * @returns 0 to continue the enumeration. 690 * @returns non-zero if the enumeration should stop. This status code will then be returned by kLdrModEnumResources(). 691 * 692 * @param pMod The module. 693 * @param idType The resource type id. NIL_KLDRMOD_RSRC_TYPE_ID if no type id. 694 * @param pszType The resource type name. NULL if no type name. 695 * @param idName The resource id. NIL_KLDRMOD_RSRC_NAME_ID if no id. 696 * @param pszName The resource name. NULL if no name. 697 * @param idLang The language id. 698 * @param AddrRsrc The address value for the resource. 699 * @param cbRsrc The size of the resource. 700 * @param pvUser The user parameter specified to kLdrModEnumDbgInfo. 701 */ 702 typedef int FNKLDRENUMRSRC(PKLDRMOD pMod, uint32_t idType, const char *pszType, uint32_t idName, const char *pszName, 703 uint32_t idLang, KLDRADDR AddrRsrc, KLDRSIZE cbRsrc, void *pvUser); 704 /** Pointer to a resource enumerator callback. */ 705 typedef FNKLDRENUMRSRC *PFNKLDRENUMRSRC; 706 707 /** NIL resource name ID. */ 708 #define NIL_KLDRMOD_RSRC_NAME_ID ( ~(uint32_t)0 ) 709 /** NIL resource type ID. */ 710 #define NIL_KLDRMOD_RSRC_TYPE_ID ( ~(uint32_t)0 ) 711 /** @name Language ID 712 * 713 * Except for the special IDs #defined here, the values are considered 714 * format specific for now since it's only used by the PE resources. 715 * 716 * @{ */ 717 /** NIL language ID. */ 718 #define NIL_KLDR_LANG_ID ( ~(uint32_t)0 ) 719 /** Special language id value for matching any language. */ 720 #define KLDR_LANG_ID_ANY ( ~(uint32_t)1 ) 721 /** Special language id value indicating language neutral. */ 722 #define KLDR_LANG_ID_NEUTRAL ( ~(uint32_t)2 ) 723 /** Special language id value indicating user default language. */ 724 #define KLDR_LANG_ID_USER_DEFAULT ( ~(uint32_t)3 ) 725 /** Special language id value indicating system default language. */ 726 #define KLDR_LANG_ID_SYS_DEFAULT ( ~(uint32_t)4 ) 727 /** Special language id value indicating default custom locale. */ 728 #define KLDR_LANG_ID_CUSTOM_DEFAULT ( ~(uint32_t)5 ) 729 /** Special language id value indicating unspecified custom locale. */ 730 #define KLDR_LANG_ID_CUSTOM_UNSPECIFIED ( ~(uint32_t)6 ) 731 /** Special language id value indicating default custom MUI locale. */ 732 #define KLDR_LANG_ID_UI_CUSTOM_DEFAULT ( ~(uint32_t)7 ) 733 /** @} */ 734 676 735 677 736 int kLdrModOpen(const char *pszFilename, PPKLDRMOD ppMod); … … 682 741 683 742 int kLdrModQuerySymbol(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t iSymbol, 684 const char *p szSymbol, PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser,685 P KLDRADDR puValue, uint32_t *pfKind);743 const char *pchSymbol, size_t cchSymbol, const char *pszVersion, 744 PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser, PKLDRADDR puValue, uint32_t *pfKind); 686 745 int kLdrModEnumSymbols(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, 687 746 uint32_t fFlags, PFNKLDRMODENUMSYMS pfnCallback, void *pvUser); … … 691 750 int kLdrModGetStackInfo(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, PKLDRSTACKINFO pStackInfo); 692 751 int kLdrModQueryMainEntrypoint(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, PKLDRADDR pMainEPAddress); 752 int kLdrModQueryResource(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t idType, const char *pszType, 753 uint32_t idName, const char *pszName, uint32_t idLang, PKLDRADDR pAddrRsrc, size_t *pcbRsrc); 754 int kLdrModEnumResources(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t idType, const char *pszType, 755 uint32_t idName, const char *pszName, uint32_t idLang, PFNKLDRENUMRSRC pfnCallback, void *pvUser); 693 756 int kLdrModEnumDbgInfo(PKLDRMOD pMod, const void *pvBits, PFNKLDRENUMDBG pfnCallback, void *pvUser); 694 757 int kLdrModHasDbgInfo(PKLDRMOD pMod, const void *pvBits); 758 int kLdrModMostlyDone(PKLDRMOD pMod); 759 695 760 696 761 /** @name Operations On The Internally Managed Mapping … … 751 816 /** @copydoc kLdrModQuerySymbol */ 752 817 int (* pfnQuerySymbol)(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t iSymbol, 753 const char *p szSymbol, PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser,754 P KLDRADDR puValue, uint32_t *pfKind);818 const char *pchSymbol, size_t cchSymbol, const char *pszVersion, 819 PFNKLDRMODGETIMPORT pfnGetForwarder, void *pvUser, PKLDRADDR puValue, uint32_t *pfKind); 755 820 /** @copydoc kLdrModEnumSymbols */ 756 821 int (* pfnEnumSymbols)(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t fFlags, … … 766 831 /** @copydoc kLdrModQueryMainEntrypoint */ 767 832 int (* pfnQueryMainEntrypoint)(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, PKLDRADDR pMainEPAddress); 833 /** @copydoc kLdrModQueryResource */ 834 int (* pfnQueryResource)(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t idType, const char *pszType, 835 uint32_t idName, const char *pszName, uint32_t idLang, PKLDRADDR pAddrRsrc, size_t *pcbRsrc); 836 /** @copydoc kLdrModEnumResources */ 837 int (* pfnEnumResources)(PKLDRMOD pMod, const void *pvBits, KLDRADDR BaseAddress, uint32_t idType, const char *pszType, 838 uint32_t idName, const char *pszName, uint32_t idLang, PFNKLDRENUMRSRC pfnCallback, void *pvUser); 768 839 /** @copydoc kLdrModEnumDbgInfo */ 769 840 int (* pfnEnumDbgInfo)(PKLDRMOD pMod, const void *pvBits, PFNKLDRENUMDBG pfnCallback, void *pvUser); … … 795 866 int (* pfnRelocateBits)(PKLDRMOD pMod, void *pvBits, KLDRADDR NewBaseAddress, KLDRADDR OldBaseAddress, 796 867 PFNKLDRMODGETIMPORT pfnGetImport, void *pvUser); 868 /** @copydoc kLdrModMostlyDone */ 869 int (* pfnMostlyDone)(PKLDRMOD pMod); 797 870 /** Dummy which should be assigned a non-zero value. */ 798 871 uint32_t uEndOfStructure; … … 876 949 int kLdrDyldGetName(HKLDRMOD hMod, char *pszName, size_t cchName); 877 950 int kLdrDyldGetFilename(HKLDRMOD hMod, char *pszFilename, size_t cchFilename); 878 int kLdrDyldQuerySymbol(HKLDRMOD hMod, uint32_t uSymbolOrdinal, const char *pszSymbolName, uintptr_t *pValue, uint32_t *pfKind); 951 int kLdrDyldQuerySymbol(HKLDRMOD hMod, uint32_t uSymbolOrdinal, const char *pszSymbolName, 952 const char *pszSymbolVersion, uintptr_t *pValue, uint32_t *pfKind); 953 int kLdrDyldQueryResource(HKLDRMOD hMod, uint32_t idType, const char *pszType, uint32_t idName, 954 const char *pszName, uint32_t idLang, void **pvRsrc, size_t *pcbRsrc); 955 int kLdrDyldEnumResources(HKLDRMOD hMod, uint32_t idType, const char *pszType, uint32_t idName, 956 const char *pszName, uint32_t idLang, PFNKLDRENUMRSRC pfnCallback, void *pvUser); 879 957 880 958 /** @name OS/2 like API 881 959 * @{ */ 960 #if defined(__OS2__) 961 # define KLDROS2API _System 962 #else 963 # define KLDROS2API 964 #endif 882 965 int kLdrDosLoadModule(char *pszObject, size_t cbObject, const char *pszModule, PHKLDRMOD phMod); 883 966 int kLdrDosFreeModule(HKLDRMOD hMod); … … 889 972 int kLdrDosReplaceModule(const char *pszOldModule, const char *pszNewModule, const char *pszBackupModule); 890 973 int kLdrDosGetResource(HKLDRMOD hMod, uint32_t idType, uint32_t idName, void **pvResAddr); 891 int kLdrDosQueryResourceSize(HKLDRMOD hMod, uint32_t idType ID, uint32_t idName, uint32_t *pcb);974 int kLdrDosQueryResourceSize(HKLDRMOD hMod, uint32_t idType, uint32_t idName, uint32_t *pcb); 892 975 int kLdrDosFreeResource(void *pvResAddr); 893 976 /** @} */ … … 899 982 void * kLdrDlSym(HKLDRMOD hMod, const char *pszSymbol); 900 983 int kLdrDlClose(HKLDRMOD hMod); 984 /** @todo GNU extensions */ 901 985 /** @} */ 902 986 903 987 /** @name Win32 like API 904 988 * @{ */ 905 HKLDRMOD kLdrWLoadLibrary(const char *pszFilename); 906 HKLDRMOD kLdrWLoadLibraryEx(const char *pszFilename, void *hFileReserved, uint32_t fFlags); 907 uint32_t kLdrWGetModuleFileName(HKLDRMOD hMod, char *pszModName, size_t cchModName); 908 HKLDRMOD kLdrWGetModuleHandle(const char *pszFilename); 909 int kLdrWGetModuleHandleEx(uint32_t fFlags, const char *pszFilename, HKLDRMOD hMod); 910 void * kLdrWGetProcAddress(HKLDRMOD hMod, const char *pszProcName); 911 uint32_t kLdrWGetDllDirectory(size_t cchDir, char *pszDir); 912 int kLdrWSetDllDirectory(const char *pszDir); 913 int kLdrWFreeLibrary(HKLDRMOD hMod); 914 int kLdrWDisableThreadLibraryCalls(HKLDRMOD hMod); 915 989 #if defined(_MSC_VER) 990 # define KLDRWINAPI __stdcall 991 #else 992 # define KLDRWINAPI 993 #endif 994 HKLDRMOD KLDRWINAPI kLdrWLoadLibrary(const char *pszFilename); 995 HKLDRMOD KLDRWINAPI kLdrWLoadLibraryEx(const char *pszFilename, void *hFileReserved, uint32_t fFlags); 996 uint32_t KLDRWINAPI kLdrWGetModuleFileName(HKLDRMOD hMod, char *pszModName, size_t cchModName); 997 HKLDRMOD KLDRWINAPI kLdrWGetModuleHandle(const char *pszFilename); 998 int KLDRWINAPI kLdrWGetModuleHandleEx(uint32_t fFlags, const char *pszFilename, HKLDRMOD hMod); 999 void * KLDRWINAPI kLdrWGetProcAddress(HKLDRMOD hMod, const char *pszProcName); 1000 uint32_t KLDRWINAPI kLdrWGetDllDirectory(size_t cchDir, char *pszDir); 1001 int KLDRWINAPI kLdrWSetDllDirectory(const char *pszDir); 1002 int KLDRWINAPI kLdrWFreeLibrary(HKLDRMOD hMod); 1003 int KLDRWINAPI kLdrWDisableThreadLibraryCalls(HKLDRMOD hMod); 1004 1005 /** The handle to a resource that's been found. */ 1006 typedef struct KLDRWRSRCFOUND *HKLDRWRSRCFOUND; 1007 /** The handle to a loaded resource. */ 1008 typedef struct KLDRWRSRCLOADED *HKLDRWRSRCLOADED; 1009 HKLDRWRSRCFOUND KLDRWINAPI kLdrWFindResource(HKLDRMOD hMod, const char *pszType, const char *pszName); 1010 HKLDRWRSRCFOUND KLDRWINAPI kLdrWFindResourceEx(HKLDRMOD hMod, const char *pszType, const char *pszName, uint16_t idLang); 1011 uint32_t KLDRWINAPI kLdrWSizeofResource(HKLDRMOD hMod, HKLDRWRSRCFOUND hFoundRsrc); 1012 HKLDRWRSRCLOADED KLDRWINAPI kLdrWLoadResource(HKLDRMOD hMod, HKLDRWRSRCFOUND hFoundRsrc); 1013 void *KLDRWINAPI kLdrWLockResource(HKLDRMOD hMod, HKLDRWRSRCLOADED hLoadedRsrc); 1014 int KLDRWINAPI kLdrWFreeResource(HKLDRMOD hMod, HKLDRWRSRCLOADED hLoadedRsrc); 1015 1016 typedef int (KLDRWINAPI *PFNKLDRWENUMRESTYPE)(HKLDRMOD hMod, const char *pszType, uintptr_t uUser); 1017 int KLDRWINAPI kLdrWEnumResourceTypes(HKLDRMOD hMod, PFNKLDRWENUMRESTYPE pfnEnum, uintptr_t uUser); 1018 int KLDRWINAPI kLdrWEnumResourceTypesEx(HKLDRMOD hMod, PFNKLDRWENUMRESTYPE pfnEnum, uintptr_t uUser, uint32_t fFlags, uint16_t idLang); 1019 1020 typedef int (KLDRWINAPI *PFNKLDRWENUMRESNAME)(HKLDRMOD hMod, const char *pszType, char *pszName, uintptr_t uUser); 1021 int KLDRWINAPI kLdrWEnumResourceNames(HKLDRMOD hMod, const char *pszType, PFNKLDRWENUMRESNAME pfnEnum, uintptr_t uUser); 1022 int KLDRWINAPI kLdrWEnumResourceNamesEx(HKLDRMOD hMod, const char *pszType, PFNKLDRWENUMRESNAME pfnEnum, uintptr_t uUser, uint32_t fFlags, uint16_t idLang); 1023 1024 typedef int (KLDRWINAPI *PFNKLDRWENUMRESLANG)(HKLDRMOD hMod, const char *pszType, const char *pszName, uint16_t idLang, uintptr_t uUser); 1025 int KLDRWINAPI kLdrWEnumResourceLanguages(HKLDRMOD hMod, const char *pszType, const char *pszName, PFNKLDRWENUMRESLANG pfnEnum, uintptr_t uUser); 1026 int KLDRWINAPI kLdrWEnumResourceLanguagesEx(HKLDRMOD hMod, const char *pszType, const char *pszName, 1027 PFNKLDRWENUMRESLANG pfnEnum, uintptr_t uUser, uint32_t fFlags, uint16_t idLang); 916 1028 /** @} */ 917 1029
Note:
See TracChangeset
for help on using the changeset viewer.