private MetadataResolver <TProcess, TModule, TRequest> CreateMetadataResolver( TModule module, MetadataReader reader, OnFunctionResolvedDelegate <TModule, TRequest> onFunctionResolved) { return(new MetadataResolver <TProcess, TModule, TRequest>(module, reader, IgnoreCase, onFunctionResolved)); }
internal MetadataResolver( TProcess process, TModule module, MetadataReader reader, OnFunctionResolvedDelegate <TModule, TRequest> onFunctionResolved) { _process = process; _module = module; _reader = reader; _onFunctionResolved = onFunctionResolved; }
internal MetadataResolver( TModule module, MetadataReader reader, bool ignoreCase, OnFunctionResolvedDelegate <TModule, TRequest> onFunctionResolved) { _module = module; _reader = reader; _stringComparer = ignoreCase ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; _ignoreCase = ignoreCase; _onFunctionResolved = onFunctionResolved; }
internal void OnModuleLoad( TProcess process, TModule module, OnFunctionResolvedDelegate <TModule, TRequest> onFunctionResolved ) { if (!ShouldEnableFunctionResolver(process)) { return; } MetadataResolver <TProcess, TModule, TRequest> resolver = null; var requests = GetRequests(process); foreach (var request in requests) { if (!ShouldHandleRequest(request)) { continue; } var moduleName = GetRequestModuleName(request); if (!ShouldModuleHandleRequest(module, moduleName)) { continue; } var signature = GetParsedSignature(request); if (signature == null) { continue; } if (resolver == null) { var reader = GetModuleMetadata(module); if (reader == null) { return; } resolver = CreateMetadataResolver(process, module, reader, onFunctionResolved); } resolver.Resolve(request, signature); } }
internal void EnableResolution( TProcess process, TRequest request, OnFunctionResolvedDelegate <TModule, TRequest> onFunctionResolved ) { if (!ShouldHandleRequest(request)) { return; } var moduleName = GetRequestModuleName(request); var signature = GetParsedSignature(request); if (signature == null) { return; } bool checkEnabled = true; foreach (var module in GetAllModules(process)) { if (checkEnabled) { if (!ShouldEnableFunctionResolver(process)) { return; } checkEnabled = false; } if (!ShouldModuleHandleRequest(module, moduleName)) { continue; } var reader = GetModuleMetadata(module); if (reader == null) { continue; } var resolver = CreateMetadataResolver(process, module, reader, onFunctionResolved); resolver.Resolve(request, signature); } }