[DllImport("wtsapi32.dll", SetLastError=true)]
public static extern bool WTSEnumerateServers(
String pDomainName,
int Reserved,
int Version,
ref IntPtr ppServerInfo,
ref uint pCount
);
Declare Function WTSEnumerateServers Lib "wtsapi32.dll" (TODO) As TODO
None.
Do you know one? Please contribute it!
There is so few documents on using WTSEnumerateServers, and even fewer using it from managed code.
Please add some!
[DllImport("wtsapi32.dll", SetLastError=true)]
public static extern bool WTSEnumerateServers(
String pDomainName,
int Reserved,
int Version,
ref IntPtr ppServerInfo,
ref uint pCount
);
[DllImport("wtsapi32.dll")]
static extern void WTSFreeMemory(IntPtr pMemory);
[StructLayout(LayoutKind.Sequential)]
public struct WTS_SERVER_INFO
{
[MarshalAs(UnmanagedType.LPStr)]public String pServerName;
}
static void Main(string[] args)
{
IntPtr pInfo = IntPtr.Zero;
uint count = 0;
Int32 dataSize = Marshal.SizeOf(typeof(WTS_SERVER_INFO));
if (WTSEnumerateServers(null, 0, 1, ref pInfo, ref count))
{
Int64 current = (int)pInfo;
for (int i = 0; i < count; i++)
{
WTS_SERVER_INFO WTScsi = (WTS_SERVER_INFO)Marshal.PtrToStructure((IntPtr)current, typeof(WTS_SERVER_INFO));
current += dataSize;
String sname = WTScsi.pServerName;
Console.WriteLine(sname);
}
WTSFreeMemory(pInfo);
}
Console.ReadLine();
}