Vb.net 检测到PinvokesTack不平衡-Visual Basic 2010

Vb.net 检测到PinvokesTack不平衡-Visual Basic 2010,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我想做一个网络检查器,但我不知道这个Pinvokestack有什么问题。实际上,代码是为VisualBasic2008编写的,但我使用的是VisualBasic2010 WebTest=CBool(InternetGetConnectedState(dwflags,0&)) 问题出在哪里?顺便说一句,它是一个模块。当您对函数使用错误声明时,您将收到MDA警告。这在VB.NET中非常常见,在Internet上有很多旧的VB6声明,这些声明在VB.NET中不起作用。一个明显的问题是这个特殊的函数,它

我想做一个网络检查器,但我不知道这个Pinvokestack有什么问题。实际上,代码是为VisualBasic2008编写的,但我使用的是VisualBasic2010

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


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

当您对函数使用错误声明时,您将收到MDA警告。这在VB.NET中非常常见,在Internet上有很多旧的VB6声明,这些声明在VB.NET中不起作用。一个明显的问题是这个特殊的函数,它需要两个DWORD类型的参数,如果您在声明中看到Long,那么您就得到了一个坏的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

当您对函数使用错误的声明时,您将得到MDA警告。这在VB.NET中非常常见,在Internet上有很多旧的VB6声明,这些声明在VB.NET中不起作用。一个明显的问题是这个特殊的函数,它需要两个DWORD类型的参数,如果您在声明中看到Long,那么您就得到了一个坏的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
转到:

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

  • 上下文切换死锁
  • Pinvokestack不平衡
  • 之后,将不再显示任何消息。

    转到:

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

  • 上下文切换死锁
  • Pinvokestack不平衡

  • 在此之后,不再显示消息。

    您能显示所用导入的声明吗?您能显示所用导入的声明吗?