2017-06-09 11 views
0

を使用する:System.AccessViolationException:保護されたメモリを読み書きしようとしました。私はテストファイルMbnApi.dllについてのプログラムを作成していたし、これは私のコードであるMbnApi.dll

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using MbnApi; 

namespace TestMbnApi 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager(); 
      IMbnInterfaceManager infMgr = mbnInfMgr as IMbnInterfaceManager; 
      IMbnConnectionManager conManager = (IMbnConnectionManager)new MbnConnectionManager(); 
      // Connection 
      IMbnConnection[] connections = conManager.GetConnections(); 
      IMbnConnection con = connections.First(); 
      // Get interfaceID 
      String interfaceID = con.InterfaceID; 
      Console.WriteLine("InterfaceID : {0}", interfaceID); 
      // Get interface 
      IMbnInterface interfa = infMgr.GetInterface(interfaceID) as IMbnInterface; 
      // GetInterfaceCapability 
      MBN_INTERFACE_CAPS caps = interfa.GetInterfaceCapability(); 
      Console.WriteLine("Caps :{0}", caps); 

      Console.ReadLine(); 
     } 
    } 
} 

私は10 &を.exeファイルやノートパソコンのWindows上で実行するように構築する場合は、SIM 3Gを持っています。その後、私はエラーを受け取りました:

Unhandled exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
    at System.StubHelpers.ValueClassMarshaler.ConvertToManaged(IntPtr dst, IntPtr src, IntPtr pMT) 
    at MbnApi.IMbnInterface.GetInterfaceCapability() 
    at TestMbnApi.Program.Main(String[] args) 

私はFrameword .Net 4.6.1とVisual Studio 2015コミュニティ版を使用していました。私はなぜこのプログラムのエラーを理解していないのですか?誰もがこれについて私をサポートすることができます。 ありがとうございます!

+0

ここでエラーが発生しますか。あなたは例外をキャッチしようとしましたか? –

+0

'GetHomeProvider'のような' IMbnInterface'のプロパティにアクセスしたいのですが、同じ問題があります。あなたはあなたの問題を解決しましたか? – creg

+0

解決策を見つけてうれしく思いますが、投稿する前に質問について調査してください。もう一つ、 'MbiApi'は誰も利用できないので、このコードはコンパイルされません。特殊なAPIを使用する場合は、他のユーザーがダウンロードするためのリンクを提供してください。また、どのような3Gのシムは、コードとは何があります。良い情報はOS + 64または32ビットでした。 Win-x86またはWin-x64の例 –

答えて

0

私はこの問題を解決しました。 この問題を解決するには、使用しているオペレーティングシステムに対応するMbnApi.dllを使用してください。私はウィンドウ10を使用しています。この操作のためにMbnApi.dllをビルドしました。 MbnApi.dllを構築するには 、私は下のリンクを次のウィンドウSDKのバージョン10を持っていた: [https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk][1]

ダウンロードウィンドウSDKた後、フォルダにアクセスしてください: C:\プログラムファイル(x86の)\ Windowsのキット\ 10 \ Lib \ winv6.3 \ um \ x64 ファイルmbnapi.tlbをファイルTlbImp.exeを含むフォルダにコピーします。 そのフォルダにアクセスし、コマンドを実行します。 TlbImp.exe mbnapi.tlb /out:MbnApi.dll したがって、MbnApi.dllを正常に構築します。

問題や成功した場合は、ぜひお試しください。

ありがとう、&

関連する問題