www.pudn.com > TSAddinInCS_src.zip > WtsApi32.cs
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using System.Text;
using System.Threading;
namespace Win32
{
namespace WtsApi32
{
public delegate ChannelReturnCodes VirtualChannelInitDelegate(ref IntPtr initHandle, ChannelDef[] channels, int channelCount, int versionRequested, [MarshalAs(UnmanagedType.FunctionPtr)] ChannelInitEventDelegate channelInitEventProc);
public delegate ChannelReturnCodes VirtualChannelOpenDelegate(IntPtr initHandle, ref int openHandle, [MarshalAs(UnmanagedType.LPStr)] string channelName, [MarshalAs(UnmanagedType.FunctionPtr)] ChannelOpenEventDelegate channelOpenEventProc);
public delegate ChannelReturnCodes VirtualChannelCloseDelegate(int openHandle);
public delegate ChannelReturnCodes VirtualChannelWriteDelegate(int openHandle, byte[] data, uint dataLength, byte[] userData);
public delegate void ChannelInitEventDelegate(IntPtr initHandle, ChannelEvents Event, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] data, int dataLength);
public delegate void ChannelOpenEventDelegate(int openHandle, ChannelEvents Event, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] data, int dataLength, uint totalLength, ChannelFlags dataFlags);
[StructLayout(LayoutKind.Sequential)]
public struct ChannelEntryPoints
{
public int Size;
public int ProtocolVersion;
[MarshalAs(UnmanagedType.FunctionPtr)]
public VirtualChannelInitDelegate VirtualChannelInit;
[MarshalAs(UnmanagedType.FunctionPtr)]
public VirtualChannelOpenDelegate VirtualChannelOpen;
[MarshalAs(UnmanagedType.FunctionPtr)]
public VirtualChannelCloseDelegate VirtualChannelClose;
[MarshalAs(UnmanagedType.FunctionPtr)]
public VirtualChannelWriteDelegate VirtualChannelWrite;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ChannelDef
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string name;
public ChannelOptions options;
}
public enum ChannelEvents
{
Initialized = 0,
Connected = 1,
V1Connected = 2,
Disconnected = 3,
Terminated = 4,
DataRecived = 10,
WriteComplete = 11,
WriteCanceled = 12
}
[Flags]
public enum ChannelFlags
{
First = 0x01,
Last = 0x02,
Only = First | Last,
Middle = 0,
Fail = 0x100,
ShowProtocol = 0x10,
Suspend = 0x20,
Resume = 0x40
}
[Flags]
public enum ChannelOptions : uint
{
Initialized = 0x80000000,
EncryptRDP = 0x40000000,
EncryptSC = 0x20000000,
EncryptCS = 0x10000000,
PriorityHigh = 0x08000000,
PriorityMedium = 0x04000000,
PriorityLow = 0x02000000,
CompressRDP = 0x00800000,
Compress = 0x00400000,
ShowProtocol = 0x00200000
}
public enum ChannelReturnCodes
{
Ok = 0,
AlreadyInitialized = 1,
NotInitialized = 2,
AlreadyConnected = 3,
NotConnected = 4,
TooManyChanels = 5,
BadChannel = 6,
BadChannelHandle = 7,
NoBuffer = 8,
BadInitHandle = 9,
NotOpen = 10,
BadProc = 11,
NoMemory = 12,
UnknownChannelName = 13,
AlreadyOpen = 14,
NotInVirtualchannelEntry = 15,
NullData = 16,
ZeroLength = 17
}
}
}