检测到PInvokeStackImbalance - Visual Basic 2010

时间:2012-06-04 11:01:54

标签: vb.net visual-studio-2010

我想制作一个互联网检查器,但我不知道这个PinvokeStackImbalance有什么问题。实际上,代码是为Visual Basic 2008制作的,但我使用的是Visual Basic 2010.

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

问题出在哪里?顺便说一句,这是一个模块。

2 个答案:

答案 0 :(得分:5)

当您对函数使用错误声明时,您将收到MDA警告。这在VB.NET中很常见,互联网上有很多旧的VB6声明在VB.NET中不起作用。一个确定的麻烦的迹象是这个特殊的功能,它需要两个DWORD类型的参数,如果你在声明中看到那么你的VB6就坏了。

从Pinvoke Interop Assistant工具或pinvoke.net网站获得相当可靠的声明:

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

答案 1 :(得分:1)

转到:

  1. 调试 - 异常 - 托管调试助手
  2. 然后取消选中以下选项:

    1. ContextSwitchDeadlock
    2. PInvokeStackImbalance
    3. 之后,不再有消息。

相关问题