問題タブ [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.
c# - RDP 仮想チャネルを使用して、クライアント側アプリケーションからサーバー側アプリケーションにメッセージを送信できますか?
統合パートナーの 1 社が、製品をターミナル サービスに移行しています。彼らの製品はターミナル サービス セッション内に存在しますが、サード パーティが同じセッション内でアプリケーションを実行することは許可されません。
この統合では、アプリケーションが組み込み API を使用してパートナー製品にメッセージを送信する必要があります。これらの API は、RDP セッションを介した通信を許可するように更新されていません。仮想チャネルの形でプロキシ経由でこれらのメッセージを送信できるようにしたいと考えています。これらのメッセージは RDP セッションによって受信され、パートナー アプリケーションに転送され、応答がチャネル経由でアプリケーションに返されます。
ただし、Web で見つけたすべての記事は、サーバーからクライアントにメッセージを送信するプロセスを取り囲んでいます。逆は可能ですか?
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 にインストールする簡単な方法はありますか?
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 を返す理由を知っている人はいますか?
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?
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?)
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 をクライアントとして使用すると問題が再現されます。