from __future__ import absolute_import import sys from . import ws2_32 from . import oleaut32 """ A small module for keeping a database of ordinal to symbol mappings for DLLs which frequently get linked without symbolic infoz. """ ords = { b"ws2_32.dll": ws2_32.ord_names, b"wsock32.dll": ws2_32.ord_names, b"oleaut32.dll": oleaut32.ord_names, } PY3 = sys.version_info > (3,) if PY3: def formatOrdString(ord_val): return "ord{}".format(ord_val).encode() else: def formatOrdString(ord_val): return b"ord%d" % ord_val def ordLookup(libname, ord_val, make_name=False): """ Lookup a name for the given ordinal if it's in our database. """ names = ords.get(libname.lower()) if names is None: if make_name is True: return formatOrdString(ord_val) return None name = names.get(ord_val) if name is None: return formatOrdString(ord_val) return name