<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pei Zheng's Mobile Computing Blog : Connection Manager</title><link>http://blogs.msdn.com/zhengpei/archive/tags/Connection+Manager/default.aspx</link><description>Tags: Connection Manager</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>ConnectivityManager in Android SDK: Compared with Connection Manager in Windows Mobile</title><link>http://blogs.msdn.com/zhengpei/archive/2009/09/22/connectivitymanager-in-android-sdk.aspx</link><pubDate>Wed, 23 Sep 2009 08:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898296</guid><dc:creator>zhengpei</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/9898296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=9898296</wfw:commentRss><description>&lt;p&gt;Anyone who has ever used Windows Mobile (actually WinCE) Connection Manager will probably share mix feelings: on one side, the ConnMgr APIs provide a nice abstraction for applications to request and use a connection without knowing and controlling the physical connectivity; on the other side, it has been a pain in the neck to override or bypass Connection Manager's connection selection logic if the application should use a specific physical connection (for example, GPRS rather than WiFi). And the concept of metanetworks, Internet, Work, WAP network, Secured WAP, is indeed very confusing and difficult to manipulate. &lt;/p&gt;
&lt;p&gt;So how does Android manage connections?&lt;/p&gt;
&lt;p&gt;In Android SDK 1.5 (code named cupcake),&amp;nbsp; the android.net.ConnectivityManager class (this is Java, not C++) provides connection state management and notification functionality. Specifically, it can be used to:&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtain broadcast intents when network connectivity changes by checking ConnectivityManager.CONNECTIVITY_ACTION and ConnectivityManager.EXTRA_NETWORK_INFO in a class extended from BroadcastReceiver. (For a brief introduction to Android application fundamentals, &lt;a href="http://developer.android.com/guide/topics/fundamentals.html" target="_blank" mce_href="http://developer.android.com/guide/topics/fundamentals.html"&gt;read this document&lt;/a&gt;. An example of network connectivity listener can be found &lt;a href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/NetworkConnectivityListener.java" target="_blank" mce_href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/NetworkConnectivityListener.java"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Query the coarse-grained or fine-grained state of the available networks using ConnectivityManager.GetActiveNetworkInfo() or ConnectivityManager.GetNetworkInfo(int networkType). &lt;br&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;This is same-old same-old as in Windows Mobile, which provides similar APIs like ConnMgrRegisterStatusNotification(), ConnMgrConnectionStatus, and ConnMgrQueryDetailedStatus() (examples of these APIs can be found in WM SDK &lt;a href="http://msdn.microsoft.com/en-us/library/aa455226.aspx" target="_blank" mce_href="http://msdn.microsoft.com/en-us/library/aa455226.aspx"&gt;cmhelper&lt;/a&gt;).&lt;br&gt;&lt;br&gt;However, the ConnectivityManager class does offer an interesting method called requestRouteToHost():&lt;br&gt;&lt;/p&gt;
&lt;div class="jd-details api apilevel-1"&gt;
&lt;blockquote&gt;
&lt;h4 class="jd-details-title"&gt;&lt;span class="normal"&gt;public boolean &lt;/span&gt;&lt;span class="sympad"&gt;requestRouteToHost&lt;/span&gt; &lt;span class="normal"&gt;(int networkType, int hostAddress)&lt;/span&gt; &lt;/h4&gt;
&lt;div class="api-level"&gt;Since: &lt;a href="http://developer.android.com/guide/appendix/api-levels.html#level1"&gt;API Level 1&lt;/a&gt; &lt;/div&gt;
&lt;div class="jd-tagdata jd-tagdescr"&gt;
&lt;p&gt;Ensure that a network route exists to deliver traffic to the specified host via the specified network interface. An attempt to add a route that already exists is ignored, but treated as successful.&lt;/p&gt;&lt;/div&gt;
&lt;div class="jd-tagdata"&gt;
&lt;h5 class="jd-tagtitle"&gt;Parameters&lt;/h5&gt;
&lt;table class="jd-tagtable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;networkType &lt;/th&gt;
&lt;td&gt;the type of the network over which traffic to the specified host is to be routed&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;hostAddress &lt;/th&gt;
&lt;td&gt;the IP address of the host to which the route is desired&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h5 class="jd-tagtitle"&gt;Returns&lt;/h5&gt;
&lt;ul class="nolist"&gt;
&lt;li&gt;&lt;code class="Code prettyprint"&gt;true&lt;/code&gt; on success, &lt;code class="Code prettyprint"&gt;false&lt;/code&gt; on failure &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;
&lt;div class="jd-details-descr"&gt;
&lt;div class="jd-tagdata"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;This method is very useful--it allows your application to ensure that a desired physical connectivity (represented by the networkType) is available to reach a specific destination. If a route to the destination IP address from the desired network type is in place (in the routing table), then it simply returns success. Otherwise, it will try to make that happen--this is not mentioned in the above description but can be traced to ConnectivityService class:&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/ConnectivityManager.java" target="_blank" mce_href="http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/net/ConnectivityManager.java"&gt;ConnectivityManager class&lt;/a&gt; where mService is a ConnectivityService object: &lt;br&gt;&lt;/p&gt;/**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Ensure that a network route exists to deliver traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host via the specified network interface.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param networkType the type of the network over which traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host is to be routed&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param hostAddress the IP address of the host to which the route is desired&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return {@code true} on success, {@code false} on failure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean requestRouteToHost(int networkType, int hostAddress) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enforceChangePermission();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ConnectivityManager.isNetworkTypeValid(networkType)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetworkStateTracker tracker = mNetTrackers[networkType];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * If there's only one connected network, and it's the one requested,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * then we don't have to do anything - the requested route already&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * exists. If it's not the requested network, then it's not possible&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * to establish the requested route. Finally, if there is more than&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * one connected network, then we must insert an entry in the routing&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * table.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (getNumConnectedNetworks() &amp;gt; 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tracker.requestRouteToHost(hostAddress);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tracker.getNetworkInfo().getType() == networkType;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;The mNetTrackers array contains NetworkStateTracker objects for different network types (mobile data and WiFi).&lt;br&gt;&lt;br&gt;In MobileDataStateTracker class, which extends from NetworkStateTracker:&lt;br&gt;&lt;br&gt;/**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Ensure that a network route exists to deliver traffic to the specified&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * host via the mobile data network.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param hostAddress the IP address of the host to which the route is desired,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * in network byte order.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return {@code true} on success, {@code false} on failure&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean requestRouteToHost(int hostAddress) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mInterfaceName != null &amp;amp;&amp;amp; hostAddress != -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DBG) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log.d(TAG, "Requested host route to " + Integer.toHexString(hostAddress));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NetworkUtils.addHostRoute(mInterfaceName, hostAddress) == 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;p&gt;Notice the NetworkUtils.addHostRoute() call. This will add a host route into the system's routing table for the specified destination address via the mobile WWAN interface. This enables the scenario where you want your MMS go through a specific APN for MMS while other traffic on another APN. As of Android SDK 1.5, only MobileDataStateTracker class will actually does this--the WiFiStateTracker class does not do anything yet at this point. &lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Wireless+Technologies/default.aspx">Wireless Technologies</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Connection+Manager/default.aspx">Connection Manager</category></item><item><title>Connection Manager: What's in CONNMGR_CONNECTION_DETAILED_STATUS?</title><link>http://blogs.msdn.com/zhengpei/archive/2007/11/01/connection-manager-what-s-in-connmgr-connection-detailed-status.aspx</link><pubDate>Thu, 01 Nov 2007 11:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5807190</guid><dc:creator>zhengpei</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/5807190.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=5807190</wfw:commentRss><description>&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font size="3" face="Calibri"&gt;The &lt;/font&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;CONNMGR_CONNECTION_DETAILED_STATUS struct tells the detailes information of all connections that connection manager can use to build connection path to satisfy a connection request at that point of time. It can be otabined by calling ConnMgrQueryDetailedStatus.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;typedef struct _CONNMGR_CONNECTION_DETAILED_STATUS{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;struct _CONNMGR_CONNECTION_DETAILED_STATUS* &lt;i&gt;pNext&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwVer&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwParams&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwType&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwSubtype&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwFlags&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwSecure&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;GUID &lt;i&gt;guidDestNet&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;GUID &lt;i&gt;guidSourceNet&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;TCHAR* &lt;b style=""&gt;&lt;i&gt;szDescriptio&lt;/i&gt;&lt;/b&gt;&lt;i&gt;n&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;TCHAR* &lt;b style=""&gt;&lt;i&gt;szAdapterName&lt;/i&gt;&lt;/b&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwConnectionStatus&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;SYSTEMTIME &lt;i&gt;LastConnectTime&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;DWORD &lt;i&gt;dwSignalQuality&lt;/i&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;CONNMGR_CONNECTION_IPADDR* &lt;i&gt;pIPAddr&lt;/i&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;} CONNMGR_CONNECTION_DETAILED_STATUS;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;Two interesting fields of this struct are szAdapterName and szDescription. Here is the output from a HTC PPC with GPRS and WiFi active:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;szAdapterName: szDescription&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;Cellular Line: T-Mobile USA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;(NULL): SOCKS-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;(NULL): HTTP-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;(NULL): T-Mobile USA Proxy Internet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;(NULL): null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;(NULL): HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New';"&gt;TIACXWLN1: MCT&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: 'Lucida Console';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;o:p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;font size="3" face="Calibri"&gt;Observations:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;font size="3" face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;The connected APN name (for example, ‘T-Mobile USA’) is in the szDescription field, with ‘Cellular Line’ as its adapter name. You can verify these two values by dumping CM_GPRSEntries using rapiconfig. The adapter name ‘Cellular Line’ is the DeviceName parameter in a GPRS entry provisioned to the device.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;font size="3" face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;Wireless LAN adapter name varies on devices. Here the adapter name is ‘TIACXWLN1’. The connected SSID is MCT, as in the szDescription field.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;font size="3" face="Calibri"&gt;3.&lt;/font&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;All proxies, including null proxies are listed as connections. Their adapter name is ‘NULL’.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Update: the dwType field can be used to identify connection types:&lt;/p&gt;&lt;table class="dtTABLE"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;th width="50%"&gt;dwType Value&lt;br&gt;&lt;/th&gt; &lt;th width="50%"&gt;Description&lt;/th&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_UNKNOWN&lt;/td&gt; &lt;td width="50%"&gt;Unknown connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_CELLULAR&lt;/td&gt; &lt;td width="50%"&gt;Cellular connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_NIC&lt;/td&gt; &lt;td width="50%"&gt;Network interface card (NIC) connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_BLUETOOTH&lt;/td&gt; &lt;td width="50%"&gt;Bluetooth connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_UNIMODEM&lt;/td&gt; &lt;td width="50%"&gt;Unimodem connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_VPN&lt;/td&gt; &lt;td width="50%"&gt;Virtual private network (VPN) connection.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;CM_CONNTYPE_PROXY&lt;/td&gt; &lt;td width="50%"&gt;Proxy connection. For more proxy constants, see Connection Manager Proxy Flag Constants.&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td width="50%"&gt;&lt;b&gt;CM_CONNTYPE_PC&lt;/b&gt;&lt;/td&gt; &lt;td width="50%"&gt;&lt;b&gt;PC connection.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5807190" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Connection+Manager/default.aspx">Connection Manager</category></item><item><title>Connection Manager: Null Proxy</title><link>http://blogs.msdn.com/zhengpei/archive/2007/11/01/connection-manager-null-proxy.aspx</link><pubDate>Thu, 01 Nov 2007 03:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5807253</guid><dc:creator>zhengpei</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/zhengpei/comments/5807253.aspx</comments><wfw:commentRss>http://blogs.msdn.com/zhengpei/commentrss.aspx?PostID=5807253</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="COLOR: red"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Null Proxy&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;In CM_ProxyEntries CSP, a proxy entry has a “Type” characteristic:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt 1in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;0 for null proxies &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt 1in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;1 for HTTP proxies &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt 1in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;2 for WAP proxies &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt 1in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;4 for SOCKS4 proxies &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt 1in; TEXT-INDENT: -0.25in; tab-stops: list .5in; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'"&gt;5 for SOCKS5 proxies &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Notice Type 0 is for Null Proxy. What is a Null Proxy? A Null Proxy basically identifies two networks—the srcID and destID--that are essentially the same. For example, on a PPC phone emulator, you can see the following proxy entry:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;characteristic type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="SrcId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Proxy" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Override" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Enable" value="1"/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="Type" value="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Username" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Password" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="ExtraInfo" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;/characteristic&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;This is a Null Proxy, who specifies a ‘hidden link’ between “My ISP” (&lt;B style="mso-bidi-font-weight: normal"&gt;{ADB0B001-10B5-3F39-27C6-9742E785FCD4}) &lt;/B&gt;and the “Internet” GUID. This is to say everything to “My ISP” is destined to “Internet”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is the default Null Proxy on PPC Phone.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Another entry:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;characteristic type="null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}"&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="SrcId" value="{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="DestId" value="{A1182988-0D73-439E-87AD-2A5B369F808B}"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Proxy" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Override" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Enable" value="1"/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;parm name="Type" value="0"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Username" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="Password" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;parm name="ExtraInfo" value=""/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;/characteristic&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;This is a Null Proxy between “My Work Network” and the “Work” network. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;On PPC Phone, a user will not see “Internet” and “Work” meta networks. Instead, UI will show “My ISP” and “My Work Network”. By default, Internally, Null Proxies are created to link “My ISP” to “Internet” and “My Work Network” to “Work”. PPC Phone UI allows user to configure which network (could be one of the two, or a new one created by the user or OEM) is going to connect to the Internet and which is to work (How confusing is that!). &lt;SPAN style="COLOR: #1f497d"&gt;Once user changes the setting, the default Null Proxies will be updated automatically to link that selected network to either “Internet” or “Work”&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="COLOR: #1f497d"&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;All these settings are actually used to establish relationships between *&lt;B&gt;networks&lt;/B&gt;* that can be those provisioned by default or by OEM.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;For example, OEM can add a new network called “TMOBILE Network”, and Null-Proxy it to “Internet”. Then, OEM can add a GPRS connection that connects to “TMOBILE Network”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus, when an app is asking Connection Manager for a connection to “Internet”, this path—using GPRS to TMOBILE then to “Internet”—will be considered against other options such as WiFi or PPP, if any.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There is a similar example in OEM doc “Add a Null Proxy connection example”.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;On Smartphone, there is no “My ISP” or “My Work Network”. A user can directly specify *&lt;B&gt;connections&lt;/B&gt;* that destine to “Internet” or “Work”.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5807253" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://blogs.msdn.com/zhengpei/archive/tags/Connection+Manager/default.aspx">Connection Manager</category></item></channel></rss>