問題タブ [virtual-channel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
535 参照

c# - RDP 仮想チャネルを使用して、クライアント側アプリケーションからサーバー側アプリケーションにメッセージを送信できますか?

統合パートナーの 1 社が、製品をターミナル サービスに移行しています。彼らの製品はターミナル サービス セッション内に存在しますが、サード パーティが同じセッション内でアプリケーションを実行することは許可されません。

この統合では、アプリケーションが組み込み API を使用してパートナー製品にメッセージを送信する必要があります。これらの API は、RDP セッションを介した通信を許可するように更新されていません。仮想チャネルの形でプロキシ経由でこれらのメッセージを送信できるようにしたいと考えています。これらのメッセージは RDP セッションによって受信され、パートナー アプリケーションに転送され、応答がチャネル経由でアプリケーションに返されます。

ただし、Web で見つけたすべての記事は、サーバーからクライアントにメッセージを送信するプロセスを取り囲んでます。逆は可能ですか?

0 投票する
1 に答える
226 参照

c++ - Visual Studio 2012 で CChannel.h を参照するにはどうすればよいですか?

仮想チャネル機能を提供するためにターミナル サービスに登録する C++ DLL を作成しようとしています。残念ながらヘッダーCChannel.hが見つかりません。

Windows SDK 8.0 を対象とする Visual Studio 2012 を使用しています。案の定、必要なヘッダーがありません。ただし、8.1\include\umディレクトリには存在します。

SDK を再インストールしても問題は変わりません。8.1 のインクルード ディレクトリを手動で参照すると、あらゆる種類の問題が発生します。

これらのヘッダーを 8.0 にインストールする簡単な方法はありますか?

0 投票する
0 に答える
287 参照

com-interop - 32 ビットの動的仮想チャネル

私は RDP 用の動的仮想チャネルを構築しましたが、ほとんどの場合はうまく機能しますが、機能しない場合があり、その理由がわかりません。

これが私が試したことと機能するものです:

  • 64 ビット サーバーに接続している 64 ビット クライアントでプロセス内で DVC プラグインを実行する
  • 64 ビット サーバーに接続する 64 ビット クライアントを使用して、64 ビット COM サーバーで DVC プラグインをアウト オブ プロセスで実行する

これが私が試して失敗したものです:

  • 64 ビット サーバーに接続している 32 ビット クライアントでプロセス内で DVC プラグインを実行する
  • 64 ビット サーバーに接続する 32 ビット クライアントを使用して、32 ビット COM サーバーで DVC プラグインをアウト プロセスで実行する
  • 64 ビット サーバーに接続する 64 ビット クライアントを使用して、32 ビット COM サーバーで DVC プラグインをアウト プロセスで実行します。

失敗したすべてのケースで、プラグインは RDP クライアントによって読み込まれ、すべての標準呼び出し (Initialize、Connected、Disconnected、Terminate) を取得し、IWTSVirtualChannelManager.CreateListener OK (つまり例外なし) を正常に呼び出すことさえできますが、 IWTSListener は、戻るときに常に null です。

IWTSVirtualChannelManager.CreateListener が新しいリスナーを作成せず、S_OK を返す理由を知っている人はいますか?

0 投票する
1 に答える
236 参照

c# - C# から VirtualChannelGetInstance 関数をエクスポートする

この関数を C# からエクスポートしたい:

次のコードを試しました:

The problem is when this exported funciton from C# is called, I always get nullreference exception. What could be a problem?

0 投票する
1 に答える
728 参照

c++ - VirtualChannelInit スタック

私はrdp仮想チャネルアプリケーションを開発しています。クライアント側の dll をレジストリに登録し、クライアント dll が読み込まれていることを理解しようとしました。pVirtualChannelInitしかし、から呼び出すと行き詰まりpEntryPointsます。結果が返されないだけで、デバッガーはこの関数の分解されたコードに移動します。しかし、この呼び出しで停止しない場合はVirtualChannelEntry、2 回目の呼び出しが行われます (なぜですか?)。

mstsc.exe に対してデバッガを使用する場合。最初の呼び出しからしばらくすると、コンソールに First-chance exception at 0x00000004 in mstsc.exe: 0xC0000005: an access violation in the performance at 0x00000004.次のように表示されます。

pEntryPoints のポインターは常に次のとおりです。

pVirtualChannelInit - 0x00000004 pVirtualChannelOpen - 0x0000ffff pVirtualChannelClose - 0x000000b8 pVirtualChannelWrite - 0x00000000 (Why 0?)

0 投票する
1 に答える
646 参照

c++ - 2 つの異なるサーバーにある 2 つの RemoteApp で仮想チャネルを使用する方法は?

64 ビットの C++仮想チャネル クライアント DLLを作成しました

仮想チャネル クライアント登録を使用して、レジストリを更新しました(方法を選択しましたDefault\Addins)

リモート Dekstop 接続を開始すると、すべてがうまくいきます。DLL は という名前のプロセスにロードされmstsc.exe、エクスポートされたVirtualChannelEntryコールバックが呼び出され、詳細をスキップして、バイトを送受信できます (私のプロセスの助けを借りて)サーバーセッションで実行され、仮想チャネルを開きます)。

別のサーバーへの 2 つ目のリモート デスクトップ接続を開くこともできます。2 番目のmstsc.exeプロセスが開始され、DLL がロードされます。すべて問題ありません。

2 つのリモート デスクトップを 2 つの "RemoteApp" (最初のサーバーに 1 つの RemoteApp、2 番目のサーバーにもう 1 つ) に置き換えると、問題が発生します。

最初の RemoteApp を起動すると、問題なく動作します (amstsc.exeが起動し、DLL が読み込まれます)。

2 番目の RemoteApp を起動すると、 newmstsc.exeがないため、DLL を再度ロードする方法はありませんが、既存のmstsc.exeものはエクスポートされたものを呼び出しませんVirtualChannelEntry。2 番目のサーバーとの仮想チャネルを確立できません。

RemoteApp ではなく、順序が重要です。最初に起動された RemoteApp のみが、そのサーバーを含む仮想チャネルを提供します。

RemoteApp を1 つだけ起動し、他のサーバーへの完全なリモート デスクトップ接続を起動すると、すべて問題ありません。2 つがmstsc.exeDLL をロードし、2 つの仮想チャネルが確立されます。

質問:

2 つの異なるサーバーにある 2 つの RemoteApp で仮想チャネルを使用する方法は?

mstsc.exe2 つのサーバーから 2 つの RemoteApp を起動すると1 つしか表示されないのはなぜですか? また、その 1 つが 2 つ目の接続を呼び出さmstsc.exeないのはなぜですか?VirtualChannelEntry

クライアントOS は Windows 2012 です。Windows 10 Pro をクライアントとして使用すると問題が再現されます。