private List <FilterModuleDescription> GetSubFilter(ModuleDescriptionStructure module) { var result = new List <FilterModuleDescription>(); var filterModule = FilterModuleDescription.GetFilterModuleDescription(module); if (filterModule == null) { return(result); } result.Add(filterModule); if (module.NextModule != IntPtr.Zero) { #if NET20 || NET35 || NET40 || NET45 ModuleDescriptionStructure nextModule = (ModuleDescriptionStructure)Marshal.PtrToStructure(module.NextModule, typeof(ModuleDescriptionStructure)); #else ModuleDescriptionStructure nextModule = Marshal.PtrToStructure <ModuleDescriptionStructure>(module.NextModule); #endif var data = GetSubFilter(nextModule); if (data.Count > 0) { result.AddRange(data); } } return(result); }
internal static FilterModuleDescription GetFilterModuleDescription(ModuleDescriptionStructure module) { if (module.Name == IntPtr.Zero) { return(null); } var result = new FilterModuleDescription { Name = Utf8InteropStringConverter.Utf8InteropToString(module.Name), ShortName = Utf8InteropStringConverter.Utf8InteropToString(module.ShortName), LongName = Utf8InteropStringConverter.Utf8InteropToString(module.LongName), Help = Utf8InteropStringConverter.Utf8InteropToString(module.Help) }; return(result); }