为什么 WTSVirtualChannelOpenEx return 31 "A device attached to the system is not functioning."
Why does WTSVirtualChannelOpenEx return 31 "A device attached to the system is not functioning."
我已经实现了远程桌面动态虚拟通道服务器和客户端,当我调用 WTSVirtualChannelOpenEx
时,它 returns false 和 GetLastError
returns:
31
A device attached to the system is not functioning.
我在 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
类型应该没问题)不被解释是真的。
使用 [MarshalAs(UnmanagedType.Bool)]
到 return 1 为真。
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);
}
}
我已经实现了远程桌面动态虚拟通道服务器和客户端,当我调用 WTSVirtualChannelOpenEx
时,它 returns false 和 GetLastError
returns:
31
A device attached to the system is not functioning.
我在 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
类型应该没问题)不被解释是真的。
使用 [MarshalAs(UnmanagedType.Bool)]
到 return 1 为真。
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);
}
}