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