0

一段时间以来,我一直在努力解决这个问题。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 声明。

如果有人看到我的错误,我发誓我会改变!

4

0 回答 0