0

電話が USB 経由で PC にドッキングされている場合でも、Windows Mobile 6.5 アプリが常に電話 WIFI アダプターを使用するようにするにはどうすればよいですか?

これはコードで行うことができますか? Connection Manager API を使用しようとしましたが、特定のネットワーク アダプターを選択する方法がわかりません。

編集:これは私が使用しようとしているコードです(Web上のどこかで見つけました)が、Connect()では、インターネットまたは作業ネットワークに接続する必要がある場合にのみ、特定のアダプターを追加する方法がわかりません。

namespace Model
{
    using System;
    using System.Text;
    using System.Runtime.InteropServices;

    public class ConnectionManager : IDisposable
    {
        #region Consts
        private const int RAS_MaxEntryName = 20;
        #endregion

        #region structs
        private class ConnectionInfo
        {
            public int cbSize = 0x40; // structure size
            public int dwParams = 0;
            public int dwFlags = 0; // flags of connection settings
            public int dwPriority = 0; // connection priority
            public int bExclusive = 0;
            public int bDisabled = 0;
            public Guid guidDestNet = Guid.Empty; // Connection GUID
            public IntPtr hWnd = IntPtr.Zero;
            public int uMsg = 0;
            public int lParam = 0;
            public int ulMaxCost = 0;
            public int ulMinRcvBw = 0;
            public int ulMaxConnLatency = 0;
        }

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        private struct RasConn
        {
            public int dwSize;
            public IntPtr hRasconn;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxEntryName + 1)]
            public string szEntryName;
        }
        #endregion

        #region P/Invoke
        [DllImport("cellcore.dll")]
        private static extern int ConnMgrEstablishConnection(
            ConnectionInfo connInfo,
            out IntPtr connection
            );

        [DllImport("coredll.dll", CharSet = CharSet.Auto)]
        private static extern uint RasEnumConnections(
            [In, Out]RasConn[] lpRasconn,   // buffer to receive connections data
            ref int lpcb,          // size in bytes of buffer
            out int lpcConnections // number of connections written to buffer
            );

        [DllImport("coredll.dll")]
        private static extern uint RasHangUp(
            IntPtr hRasConn
            );
        #endregion

        public ConnectionManager()
        {

        }

        public bool Connect()
        {
            ConnectionInfo connInfo_ = new ConnectionInfo();
            connInfo_.cbSize = Marshal.SizeOf(connInfo_);
            connInfo_.dwFlags = 0;
            connInfo_.dwParams = 0x1;
            connInfo_.guidDestNet = new Guid("436EF144-B4FB-4863-A041-8F905A62C572");
            connInfo_.dwPriority = 0x08000;
            connInfo_.bExclusive = 0;
            connInfo_.bDisabled = 0;
            connInfo_.hWnd = IntPtr.Zero;
            connInfo_.lParam = 0;

            IntPtr conn_ = IntPtr.Zero; //we dont need to save it because it aint work
            return ConnMgrEstablishConnection(connInfo_, out conn_) == 0;
        }

        //using ras to disconnect
        public static void Disconnect()
        {
            RasConn[] rconn_ = new RasConn[1]; //as a rule 1 connection is enough
            int out_ = Marshal.SizeOf(typeof(RasConn));
            int cout_ = 1;

            rconn_[0].dwSize = out_;
            rconn_[0].szEntryName = null;


            RasEnumConnections(rconn_, ref out_, out cout_);

            if (cout_ > 0)
            {
                RasHangUp(rconn_[0].hRasconn);
                System.Threading.Thread.Sleep(3000); //msdn says that we should do that
            }
        }

        public void Dispose()
        {
            ConnectionManager.Disconnect();
        }
    }
}
4

1 に答える 1

0

確かではありませんが、プロビジョニングを使用してこれを処理し、DTPT とも呼ばれるデスクトップ パススルー接続 (ActiveSync/WMDC) を安全ではなく、WiFi/LAN 接続を安全 ( http://msdn.microsoft. com/en-us/library/aa455851.aspx )。connMgr は最初に「安全な」接続を使用するため、これは機能するはずです。停止: リンクされたサイトのメモを読みました:「注意 Secure の値を false に設定することは、デスクトップ パススルー (DTPT) 接続ではサポートされていません。DTPT は、安全な接続として機能するように設計されています。」. したがって、このアプローチは DTPT のオプションではありません。

別のアプローチは、DTPT接続を「仕事」接続として指定することですが、(私が推測するに)接続要求は「インターネット」接続に対するものです。プロビジョニングの例: http://msdn.microsoft.com/en-us/library/ms890844.aspx。ActiveSync/WMDC には、DTPT の「ターゲット」を指定するための接続設定もあります: 自動/インターネット/仕事。動作するように設定しようとしましたか?

おそらく、接続マネージャーの使用のために DTPT 接続を単純に削除することもできます: http://msdn.microsoft.com/en-us/library/aa456184.aspx

wap プロビジョニングを使用するには、DMProcessConfigXML API が必要です: http://msdn.microsoft.com/en-us/library/ee497867%28v=winembedded.60%29.aspx。.net の例は次のとおりです: DMProcessConfigXML を使用して Windows Mobile デバイスをプロビジョニングするにはどうすればよいですか?

さらにヘルプを提供するには、デバイスの接続設定の RapiConfig ダンプが必要です。

于 2013-09-13T04:01:23.550 に答える