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