2012-06-04 33 views
1

我想制作一个互联网检查程序,但我不知道这个PinvokeStackImbalance有什么问题。实际上,代码是针对Visual Basic 2008年提出的,但我真的使用的Visual Basic 2010PInvokeStackImbalance被检测到 - Visual Basic 2010

WebTest的= CBool​​函数(的InternetGetConnectedState(dwFlags中,0 &))

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

+1

你能显示导入使用的声明吗? – Steve

回答

5

当您使用该函数的错误声明时,您将获得该MDA警告。这在VB.NET中很常见,在因特网上有很多旧的VB6声明,这些声明在VB.NET中不起作用。一个确定的麻烦迹象是这个特殊的函数,它需要两个类型为DWORD的参数,如果在声明中看到长的,那么你的VB6版本就不好了。

获得来自的PInvoke互操作助理工具或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 
+0

这是正确的答案,这对我有用,谢谢! –

1

转到:

  1. 调试 - 例外 - 托管调试助手

,然后取消选中:

  1. ContextSwitchDeadlock
  2. PInvokeStackImbalance

之后,没有更多的消息。