コード例 #1
0
ファイル: RdpBridge.cs プロジェクト: sadanjon/RemoteCat
        private void OnContextCreated(IntPtr frgContext)
        {
            _frgContext = frgContext;

            if (_exitError != null)
            {
                FreeRdpGlue.Disconnect(_frgContext);
                return;
            }
        }
コード例 #2
0
ファイル: RdpBridge.cs プロジェクト: sadanjon/RemoteCat
        private void StartIngressThread()
        {
            _inputThread = new Thread(() =>
            {
                try
                {
                    while (_running)
                    {
                        if (!_channel.ReadDelimited(out RdpMessage rdpMessage))
                        {
                            _running = false;
                            continue;
                        }

                        Console.WriteLine($"XXX {rdpMessage.MessageCase}");
                        switch (rdpMessage.MessageCase)
                        {
                        case RdpMessage.MessageOneofCase.VerifyCertificateResult:
                            _rdpVerifyCertificateResultMessage.Set(rdpMessage.VerifyCertificateResult);
                            break;

                        case RdpMessage.MessageOneofCase.AuthenticateResult:
                            _rdpAuthenticateResultMessage.Set(rdpMessage.AuthenticateResult);
                            break;

                        case RdpMessage.MessageOneofCase.Disconnect:
                            FreeRdpGlue.Disconnect(_frgContext);
                            break;

                        case RdpMessage.MessageOneofCase.SessionEnd:
                            _running = false;
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    _exitError = e;

                    if (_frgContext != IntPtr.Zero)
                    {
                        FreeRdpGlue.Disconnect(_frgContext);
                    }
                }
            });
            _inputThread.Start();
        }