1

インターネットチェッカーを作りたいのですが、このPinvokeStackImbalanceの何が問題なのかわかりません。実際、コードはVisual Basic 2008用に作成されましたが、私はVisualBasic2010を使用しています。

WebTest = CBool​​(InternetGetConnectedState(dwflags、0&))

問題はどこにありますか?ところで、それはモジュールです。

4

2 に答える 2

5

関数に不適切な宣言を使用すると、MDA 警告が表示されます。これは VB.NET ではよくあることですが、VB.NET では機能しない古い VB6 宣言がインターネット上にたくさん出回っています。問題の確かな兆候は、この特定の関数です。DWORD 型の引数を 2 つ取ります。宣言にLongが表示されている場合は、VB6 が正しくありません。

Pinvoke Interop Assistant ツールまたは pinvoke.net Web サイトから、かなり信頼できる宣言を取得します。

Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
                     (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean

Private Enum ConnectionStates
    Modem = &H1
    LAN = &H2
    Proxy = &H4
    RasInstalled = &H10
    Offline = &H20
    Configured = &H40
End Enum
于 2012-06-04T12:43:17.990 に答える
2

次の場所に移動します。

  1. デバッグ - 例外 - マネージ デバッグ アシスタント

次に、次のオプションのチェックを外します。

  1. ContextSwitchデッドロック
  2. PInvokeStackImbalance

その後、メッセージはありません。

于 2013-01-30T17:09:20.723 に答える