我一直在打这个问题一段时间。在WLan中看似简单的命令对我来说是失败的。我正在尝试执行以下代码:
[DllImport("Wlanapi.dll", EntryPoint = "WlanQueryInterface", SetLastError = true)]
public static extern uint WlanQueryInterface(
[In] IntPtr hClientHandle,
[In] ref Guid pInterfaceGuid,
WLAN_INTF_OPCODE OpCode,
IntPtr pReserved,
[Out] out uint pdwDataSize,
ref IntPtr ppData,
IntPtr pWlanOpcodeValueType);
var tempID = InterfaceID;
UInt32 dataSize;
IntPtr pData = IntPtr.Zero;
uint results = WlanQueryInterface(
_sessionHandle,
ref tempID,
WLAN_INTF_OPCODE.wlan_intf_opcode_current_connection,
IntPtr.Zero,
out dataSize,
ref pData,
IntPtr.Zero);
我每次都得到的是50和没有指针的结果。我已经搜索过并且无法确定50表示什么作为返回值。我最好的猜测是它的ERROR_INVALID_STATE。但是我也无法找到文档列出的错误状态的任何定义。
我之前打开了一个句柄,并确认这仍然有效。我还验证了Interface Guid是正确的(在这种情况下从InterfaceInfo结构中检索)。我使用了很多不同的WLan方法,没有类似的问题,所以我猜我没有正确定义P / Invoke声明。
如果有人以我的方式看到错误,我发誓我会改变!