Je la structure suivante:Déballer _WTS_CLIENT_ADDRESS.Address dans vb.net (récupération d'adresse IP du client Terminal Server)
<StructLayout(LayoutKind.Sequential)> _
Public Structure _WTS_CLIENT_ADDRESS
Public AddressFamily As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> _
Public Address() As Byte
End Structure
qui est peuplée par l'appel suivant:
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)
L'adresse tableau d'octets est rempli, mais je n'ai aucune idée de la façon de le convertir en une chaîne utile ou des valeurs entières. La documentation MDSN est éparse: http://msdn.microsoft.com/en-us/library/aa383857(VS.85).aspx