VB.NET运用WLANAPI,获取参数失败

bullswq 2017-03-14 10:23:05
Private Declare Function WlanOpenHandle Lib "wlanapi.dll" (ByVal dwClientVersion As UInteger, ByVal pReserved As IntPtr, <Out()> ByRef pdwNegotiatedVersion As UInteger, ByRef phClientHandle As IntPtr) As UInteger
Private Declare Function WlanCloseHandle Lib "wlanapi.dll" (<[In]()> ByVal hClientHandle As IntPtr, ByVal pReserved As IntPtr) As UInteger
Private Declare Function WlanEnumInterfaces Lib "wlanapi.dll" (<[In]()> ByVal hClientHandle As IntPtr, ByVal pReserved As IntPtr, <Out()> ByRef ppInterfaceList As IntPtr) As UInteger

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dwCurVersion As UInteger
Dim hClient As UInteger
Me.Text = WlanOpenHandle(2, Nothing, dwCurVersion, hClient)
Dim pi As IntPtr
Dim dwresult = WlanEnumInterfaces(hClient, Nothing, pi)
Dim rt As WLAN_INTERFACE_INFO_LIST
rt = Marshal.PtrToStructure(pi, GetType(WLAN_INTERFACE_INFO_LIST))
Label1.Text = rt.dwNumberofItems
End Sub
系统显示尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这是为什么呢?这个程序目的是获取本地WIFI参数
...全文
288 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bullswq 2017-03-18
  • 打赏
  • 举报
回复
谢谢,我再另个帖子里结贴掉了,搞定了
清晨曦月 元老 2017-03-17
  • 打赏
  • 举报
回复
这种一定是你的某个API声明或者调用参数不对呗。所以某行提示读写受保护内存。查了一下MSDN给出的原型,那么大约就是这么改咯: 'DWORD WINAPI WlanOpenHandle( ' _In_ DWORD dwClientVersion, ' _Reserved_ PVOID pReserved, ' _Out_ PDWORD pdwNegotiatedVersion, ' _Out_ PHANDLE phClientHandle '); <DllImport("wlanapi.dll")> Private Shared Function WlanOpenHandle(ByVal dwClientVersion As UInteger, ByVal pReserved As IntPtr, ByVal pdwNegotiatedVersion As IntPtr, ByVal phClientHandle As IntPtr) As IntPtr End Function 'DWORD WINAPI WlanCloseHandle( ' _In_ HANDLE hClientHandle, ' _Reserved_ PVOID pReserved '); <DllImport("wlanapi.dll")> Private Shared Function WlanCloseHandle(ByVal hClientHandle As IntPtr, ByVal pReserved As IntPtr) As UInteger End Function 'DWORD WINAPI WlanEnumInterfaces( ' _In_ HANDLE hClientHandle, ' _Reserved_ PVOID pReserved, ' _Out_ PWLAN_INTERFACE_INFO_LIST *ppInterfaceList '); <DllImport("wlanapi.dll")> Private Shared Function WlanEnumInterfaces(ByVal hClientHandle As IntPtr, ByVal pReserved As IntPtr, ByRef ppInterfaceList As WLAN_INTERFACE_INFO_LIST) As UInteger End Function 'typedef struct _WLAN_INTERFACE_INFO_LIST { ' DWORD dwNumberOfItems; ' DWORD dwIndex; ' WLAN_INTERFACE_INFO InterfaceInfo[]; '} WLAN_INTERFACE_INFO_LIST, *PWLAN_INTERFACE_INFO_LIST; Structure WLAN_INTERFACE_INFO_LIST Public dwNumberOfItems As Integer Public dwIndex As Integer Public InterfaceInfo As IntPtr End Structure Dim rt As New WLAN_INTERFACE_INFO_LIST Dim dwresult = WlanEnumInterfaces(hClient, IntPtr.Zero, rt)

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧