public override ExternalProcedure LookupProcedureByName(string moduleName, string procName) { //$REVIEW: common code with Win32_64 platform, consider pushing to base class? EnsureTypeLibraries("win32"); return(TypeLibs.Select(t => t.Lookup(procName)) .Where(sig => sig != null) .Select(s => new ExternalProcedure(procName, s)) .FirstOrDefault()); }
public override ExternalProcedure LookupProcedureByName(string moduleName, string procName) { EnsureTypeLibraries("win64"); var ep = TypeLibs.Select(t => t.Lookup(procName)) .Where(sig => sig != null) .Select(s => new ExternalProcedure(procName, s)) .FirstOrDefault(); if (ep != null) { var ch = CharacteristicsLibs .Select(c => c.Lookup(ep.Name)) .FirstOrDefault(); ep.Characteristics = ch; } return(ep); }
public override ExternalProcedure LookupProcedureByOrdinal(string moduleName, int ordinal) { EnsureTypeLibraries("win32"); return(TypeLibs .Where(t => string.Compare(t.ModuleName, moduleName, true) == 0) .Select(t => { SystemService svc; if (t.ServicesByVector.TryGetValue(ordinal, out svc)) { return new ExternalProcedure(svc.Name, svc.Signature); } else { return null; } }) .Where(p => p != null) .FirstOrDefault()); }