Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / _WinHttpWebProxyDataBuilder.cs / 1305376 / _WinHttpWebProxyDataBuilder.cs
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; namespace System.Net { internal sealed class WinHttpWebProxyBuilder : WebProxyDataBuilder { protected override void BuildInternal() { GlobalLog.Enter("WinHttpWebProxyBuilder#" + ValidationHelper.HashString(this) + "::BuildInternal()"); UnsafeNclNativeMethods.WinHttp.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ieProxyConfig = new UnsafeNclNativeMethods.WinHttp.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG(); // Make sure the native strings get freed, even if some unexpected exception occurs. RuntimeHelpers.PrepareConstrainedRegions(); try { if (UnsafeNclNativeMethods.WinHttp.WinHttpGetIEProxyConfigForCurrentUser(ref ieProxyConfig)) { string proxy = null; string proxyByPass = null; string autoConfigUrl = null; proxy = Marshal.PtrToStringUni(ieProxyConfig.Proxy); proxyByPass = Marshal.PtrToStringUni(ieProxyConfig.ProxyBypass); autoConfigUrl = Marshal.PtrToStringUni(ieProxyConfig.AutoConfigUrl); // note that ieProxyConfig.Proxy will be null if "use a proxy server" flag is turned off, even if // the user specified a proxy address. When we read directly from the Registry we need to check // for ProxyTypeFlags.PROXY_TYPE_PROXY. WinHttp does this for us and if the flag is not set, // ieProxyConfig.Proxy will be null. SetProxyAndBypassList(proxy, proxyByPass); SetAutoDetectSettings(ieProxyConfig.AutoDetect); // similar to comment above: ieProxyConfig.AutoConfigUrl will only be set if "automatically detect // settings" flag is set. We don't need to check ProxyTypeFlags.PROXY_TYPE_AUTO_PROXY_URL; WinHttp // takes care of it and sets AutoConfigUrl to null if the flag is not set, regardless of the actual // config script string. SetAutoProxyUrl(autoConfigUrl); } else { int errorCode = Marshal.GetLastWin32Error(); if (errorCode == Microsoft.Win32.NativeMethods.ERROR_NOT_ENOUGH_MEMORY) { throw new OutOfMemoryException(); } // if API call fails, rely on automatic detection SetAutoDetectSettings(true); } } finally { Marshal.FreeHGlobal(ieProxyConfig.Proxy); Marshal.FreeHGlobal(ieProxyConfig.ProxyBypass); Marshal.FreeHGlobal(ieProxyConfig.AutoConfigUrl); } GlobalLog.Leave("WinHttpWebProxyBuilder#" + ValidationHelper.HashString(this) + "::BuildInternal()"); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StorageInfo.cs
- SymLanguageVendor.cs
- unsafenativemethodstextservices.cs
- OrthographicCamera.cs
- CompoundFileStorageReference.cs
- SqlCacheDependencyDatabase.cs
- XmlAtomicValue.cs
- ConfigurationSectionHelper.cs
- FlowDocumentPaginator.cs
- ListItemConverter.cs
- StylusShape.cs
- WaitHandle.cs
- DataGridViewTopLeftHeaderCell.cs
- ValueSerializer.cs
- PropertyPathWorker.cs
- ZoomPercentageConverter.cs
- OdbcInfoMessageEvent.cs
- ProjectionCamera.cs
- TileBrush.cs
- PropertyGridDesigner.cs
- RSAPKCS1SignatureFormatter.cs
- SmtpException.cs
- InternalConfigEventArgs.cs
- HashCodeCombiner.cs
- srgsitem.cs
- Vector3DAnimationUsingKeyFrames.cs
- SQLGuid.cs
- SingleSelectRootGridEntry.cs
- Camera.cs
- ForeignConstraint.cs
- XmlSerializationReader.cs
- SystemWebCachingSectionGroup.cs
- ProcessExitedException.cs
- Parallel.cs
- ReadOnlyCollectionBase.cs
- SpotLight.cs
- _TransmitFileOverlappedAsyncResult.cs
- SafeRegistryKey.cs
- WindowsTitleBar.cs
- UIntPtr.cs
- OutKeywords.cs
- ToggleButton.cs
- TreeNodeMouseHoverEvent.cs
- TaskHelper.cs
- SessionPageStatePersister.cs
- Attributes.cs
- CurrencyWrapper.cs
- TransformerTypeCollection.cs
- XAMLParseException.cs
- KoreanLunisolarCalendar.cs
- TaskFileService.cs
- PersonalizationDictionary.cs
- XmlSchemaSequence.cs
- DataKey.cs
- TextEffectCollection.cs
- DeclaredTypeValidator.cs
- ComponentManagerBroker.cs
- XmlSchemaObjectCollection.cs
- Transform3D.cs
- TimelineGroup.cs
- PreviewKeyDownEventArgs.cs
- RewritingValidator.cs
- SqlDataSourceCommandEventArgs.cs
- DataGridTableCollection.cs
- SessionPageStatePersister.cs
- WebServiceTypeData.cs
- TypeBuilder.cs
- TimeSpanValidatorAttribute.cs
- ActivityStateQuery.cs
- KerberosSecurityTokenAuthenticator.cs
- SqlDataSourceConfigureFilterForm.cs
- SspiSafeHandles.cs
- ProcessInputEventArgs.cs
- ConfigXmlAttribute.cs
- WebBrowserNavigatedEventHandler.cs
- JavaScriptSerializer.cs
- ButtonFieldBase.cs
- QilTargetType.cs
- TextEditorCharacters.cs
- Missing.cs
- GradientStop.cs
- shaperfactory.cs
- SizeAnimationClockResource.cs
- IndexedEnumerable.cs
- XmlNavigatorFilter.cs
- IgnoreFileBuildProvider.cs
- TypedReference.cs
- SystemIcmpV4Statistics.cs
- TreeNodeBindingCollection.cs
- PackageDigitalSignature.cs
- HitTestFilterBehavior.cs
- AssemblyCollection.cs
- XmlSchemaExporter.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- VariableDesigner.xaml.cs
- MobileErrorInfo.cs
- SubMenuStyleCollection.cs
- CfgRule.cs
- StringKeyFrameCollection.cs
- BackStopAuthenticationModule.cs