I'm in the process of rewriting the SMB code to use winsock name lookup and socket calls without NetBIOS first, and to fall back to NetBIOS (using the Netbios() function) second if that fails.
beware that you cannot directly call wsock32 functions (nor netapi32) from ntdll.
I'd like to expose some SMB functions so that named pipes and files to UNC paths use the same library of SMB functions. A couple of netapi functions (NetServerEnum and NetShareEnum) need to create SMBs also, and I'd like to implement them--they can be used to implement "network neighborhood."
if you really want to share the code, better implement the TDI interface to linkage points in ntdll and make netapi32 depend on it, but that may be a bit overkill for the moment.
A+