2013-01-05 77 views
2

在MSDN上有一个example in C++ on how to create Dynamic virtual channel plugin如何编译来自MSDN的动态虚拟通道C++示例

我的问题是,我不知道如何编译它。

是否需要创建一个ATL项目并在main.cpp上复制并粘贴在msdn上找到的代码?我该称这个项目为何?如果我创建名称为DVCPlugin的ATL项目,那么Visual Studio 2008会自动创建DVCPlugin_i.h file,否则我没有该文件。

tsvirtualchannels.h是Windows 7 SDK的一部分,所以至少包括我没有问题。

一个我收到的错误是这样的:

&CLSID_DVCSamplePlugin无法识别标识

我试图与名称DVCSamplePlugin创建ATL项目,但我收到了同样的消息以上。

我需要做的任何建议才能够编译该源代码?

回答

1

这只是用于测试的远程桌面连接的一些代码 -

有是通过远程桌面连接(RDC)客户端,它总是存在的,侦听传入连接实现的“回声”监听器。在编写动态虚拟通道(DVC)模块的服务器端时,作为快速测试,您可以打开名为“ECHO”的端点。对从此端点实例化的通道的任何写入都将导致收到相同的数据。

MSDN。 此类项目通常包含在某些SDK中。而这一次似乎是Windows 8 SDK

更新的一部分:从蒂姆(见下文)的批评之后,我决定加入与MSDN信息这些链接 - Remote Desktop Services. TS-Teleport: Sample Instructions Remote Desktop Services Blog. Dynamic Virtual Channels

+0

-1此答案不解决问题。 – IInspectable

+0

@Tim - 用什么方式?如果你下载了SDK,必须有一个完整的项目需要编译所有头文件。你打算如何以另一种方式编译它? – SChepurin

+0

并非每个在MSDN上发布的示例代码都是作为SDK中的完整项目存在的。此DVC示例COM对象不是SDK下载的一部分。 – IInspectable

2

我花了一对夫妇几小时,但我得到了客户端插件使用VS 2012构建的源代码。以下是我的步骤。

  1. 开始一个名为DVCPlugin的新ATL项目。选择一个DLL的选项。
  2. 选择对COM +的支持并选中对象注册器的复选框。
  3. 将一个名为GUID.cpp的文件添加到DVCPlugin项目中。包括stdafx.h在此文件中。
  4. ATL给了我一个名为CompReg的类,它有它自己的IDL条目和GUID。我需要将该GUID与CDVCSamplePlugin类相关联。
  5. DVCPlugin.cpp中,将<tsvirtualchannels.h>的包含添加到顶部。
  6. DllInstall()的定义后粘贴示例代码的其余部分。
  7. 将行DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN)更改为DECLARE_REGISTRY_RESOURCEID(IDR_DVCPLUGIN)
  8. 看起来像构建解决方案的方式静默运行DVCPlugin.rgs文件中的注册表脚本。不过,我不得不将线程模型更改为Free。
  9. 如果mstsc.exe是64位的,您需要一个64位的插件DLL才能使动态发现工作。