>我已经实现了一个远程桌面动态虚拟通道服务器和客户端,当我调用WTSVirtualChannelOpenEx
时,它返回 false 并GetLastError
返回:
31
连接到系统的设备无法正常工作。
我正在OnNewChannelConnection
中设置pAccept
和pCallback
并返回S_OK
. 我没有看到任何例外。 使用ECHO
DVC的测试在同一客户端上打开完全正常。
internal class DemoWtsListenerCallback : IWTSListenerCallback
{
public void OnNewChannelConnection(IWTSVirtualChannel pChannel,
[MarshalAs(UnmanagedType.BStr)] string data,
out bool pAccept, out IWTSVirtualChannelCallback pCallback)
{
pAccept = true;
pCallback = new DemoWtsChannelCallback(pChannel);
}
}
为什么我的服务器出错?
mstsc
期望将pAccept
设置为 1 表示 true - 0xffffffff
的默认封送(根据BOOL
类型应该没问题(不会被解释为 true。
使用 [MarshalAs(UnmanagedType.Bool)]
返回 1 表示 true。
internal class DemoWtsListenerCallback : IWTSListenerCallback
{
public void OnNewChannelConnection(
IWTSVirtualChannel pChannel,
[MarshalAs(UnmanagedType.BStr)] string data,
[MarshalAs(UnmanagedType.Bool)] out bool pAccept,
out IWTSVirtualChannelCallback pCallback)
{
pAccept = true;
pCallback = new DemoWtsChannelCallback(pChannel);
}
}