開梱_WTS_CLIENT_ADDRESS.住所vb.net (取得IPアドレスからターミナルサービスをクライアント)

StackOverflow https://stackoverflow.com/questions/288560

質問

私は以下のような構造をとります:

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure _WTS_CLIENT_ADDRESS
        Public AddressFamily As Integer
        <MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> _
        Public Address() As Byte
    End Structure

る人口は、以下の呼び出し:

        Dim _ClientIPAddress As New _WTS_CLIENT_ADDRESS
        Dim rtnPtr As IntPtr
        Dim rtncount As Int32

        NativeMethods.WTSQuerySessionInformation(CInt(NativeMethods.WTS_CURRENT_SERVER_HANDLE), NativeMethods.WTS_CURRENT_SESSION, NativeMethods.WTS_INFO_CLASS.WTSClientAddress, rtnPtr, rtncount)
        '_ClientIPAddress()
        _ClientIPAddress = _
            CType(System.Runtime.InteropServices.Marshal.PtrToStructure(rtnPtr, GetType(_WTS_CLIENT_ADDRESS)), _WTS_CLIENT_ADDRESS)

のアドレスバイト配列は、人口がわからないどのように変換する有効な文字列または整数値です。のMDSN文書は疎: http://msdn.microsoft.com/en-us/library/aa383857(VS.85).aspx

役に立ちましたか?

解決

だほとんどが自のコードです。そうだね、MSDNはなかなか明確などの内部をバイト配列が、こちらのよくお使いいただくために:

IPAddress address = new IPAddress(_ClientIPAddress.Address.Skip(2).Take(4).ToArray());

最初の二つのバイトがないと思われるものの場合はAF_INET(IPv4または2)オペレーションのバイトのIPv4アドレス、クライアントの

まもっていただきたいと、コードの取り扱IPv6(AF_INET6)が正常に扱うことAF_INET6である。かを読み込む必要があり16バイトの代わりに、4このプロトコルです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top