为什么WTSVirtualChannelOpenEx返回31 "A device attached to the system is not functioning."



>我已经实现了一个远程桌面动态虚拟通道服务器和客户端,当我调用WTSVirtualChannelOpenEx时,它返回 false 并GetLastError返回:

31
连接到系统的设备无法正常工作。

我正在OnNewChannelConnection中设置pAcceptpCallback并返回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);
    }
}

相关内容

最新更新