| 931 | char szModuleName[MAX_PATH + 1] = {0}; |
| 932 | |
| 933 | PE_FOREACH_MODULE_SYMBOL( pModule, pSymbol ) |
| 934 | { |
| 935 | PE_SYMBOL *pResolved = NULL; |
| 936 | |
| 937 | if( pSymbol->Name[0] == 0 ) |
| 938 | { |
| 939 | if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_RESOLVE_ORDINALS ) ) |
| 940 | { |
| 941 | if( peModule.dwParseState == PE_NONE_PARSED ) |
| 942 | { |
| 943 | if( peLocateModule( pe, pModule, &peModule ) != ERROR_SUCCESS || |
| 944 | peParseExportTable( &peModule, 0xFFFF ) != ERROR_SUCCESS ) |
| 945 | { |
| 946 | goto next_module; |
| 947 | } |
| 948 | } |
| 949 | |
| 950 | if( peGetExportedSymbolByOrdinal( &peModule, pSymbol->Ordinal, &pResolved ) == ERROR_SUCCESS ) |
| 951 | { |
| 952 | strncpy_s( pSymbol->Name, pResolved->Name, 0xFE ); |
| 953 | } |
| 954 | } |
| 955 | else if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_RENAME_ORDINALS ) ) |
| 956 | { |
| 957 | if( szModuleName[0] == 0 ) |
| 958 | { |
| 959 | strncpy_s( szModuleName, pModule->Name, MAX_PATH ); |
| 960 | char *p = strrchr( szModuleName, '.' ); |
| 961 | if( p ) |
| 962 | *p = '\0'; |
| 963 | } |
| 964 | |
| 965 | sprintf_s( pSymbol->Name, "%s@%u", szModuleName, pSymbol->Ordinal ); |
| 966 | } |
| 967 | } |
| 968 | |
| 969 | if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_DEMANGLE_NAMES ) ) |
| 970 | { |
| 971 | if( pSymbol->Name[0] != 0 ) |
| 972 | { |
| 973 | char szUndecoratedBuffer[0xFF] = {0}; |
| 974 | |
| 975 | if( UnDecorateSymbolName( pSymbol->Name, szUndecoratedBuffer, 0xFE, UNDNAME_COMPLETE ) ) |
| 976 | { |
| 977 | strncpy_s( pSymbol->Name, szUndecoratedBuffer, 0xFE ); |
| 978 | } |
| 979 | } |
| 980 | } |
| 981 | } |
| 982 | |
| 983 | next_module: |
| 984 |
nothing calls this directly
no test coverage detected