我的 $Foo ATL 解决方案中的 ($Foo)PS 项目有何用途?

2024-01-23

在MSVC中创建一个ATL项目似乎创建的不是一个而是两个项目;后者的名称与前者相同,但名称后附加了 PS。第二个项目的目的是什么?我如何判断我是否需要它?


COM 支持跨两个不同的线程、两个不同的进程或两台不同的机器进行接口方法调用。这就是所谓的编组。两个不同的线程是最常见的情况,COM 服务器通常不是线程安全的。 COM 通过将来自“错误”线程的调用编组到创建服务器的线程来为此类单线程组件类实现线程安全。当您编写进程外服务器时,进程之间会发生封送处理。不同机器之间跨网络的称为DCOM。

这是通过创建一个看起来像的接口实例来实现的exactly就像原来的一样。但接口的所有方法实际上都是替代品,它们负责编组调用的工作。这是代理。电线的另一端有一个替代品,看起来exactly类似于界面,但做相反的工作。这是存根。代理和存根协同工作,营造出您正在程序中进行简单方法调用的错觉。

代理的主要工作是将方法调用的参数序列化到内存缓冲区或网络数据包中。这可能非常简单,尤其是当您使用指向可变大小结构的指针时。 COM 需要帮助才能做到这一点,这就是 FooPS 项目的工作。当您在 .idl 文件上运行 midl.exe 时,midl 会根据接口定义自动生成代码以实现代理和存根。这通常已经足够好了,但如果 IDL 中的内置关键字不足以描述您的数据,您可能需要实现自己的关键字。

最后但并非最不重要的一点是,Windows 提供了一个标准的编组器,可以编组简单的接口。旨在支持 COM 自动化定义的 COM 子集。换句话说,从 IDispatch 派生并且仅使用自动化兼容类型的接口。您只需要正确获取注册表项即可启用它,否则不需要 midl 生成的代理/存根。当然,如果您只在一个线程上进行简单的进程内调用,那么您也不需要它。这很常见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 $Foo ATL 解决方案中的 ($Foo)PS 项目有何用途? 的相关文章

  • 如何使用 C# 打印 pdf

    我在 C 应用程序中使用 进程 打印 pdf 文件 但是我无法获取打印状态 我发现可以通过 System management 和 System printing 与打印机 队列进行交互 我做了很多尝试 但都出错了使用这两个命名空间但无法打
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 如何检查 .NET 4.0 中的泛型参数是否是动态的

    我有课ObjectMapper
  • TestMethod:异步任务 TestSth() 不适用于 .NET 4.0

    我正在尝试使用 NET 4 0 BCL Async 和 MsTest 运行异步测试方法 看来这个设置不能处理 测试方法 异步Task测试Sth 由于测试用例资源管理器中缺少条目 将签名更改为异步后void 我可以运行测试用例 但结果错误 根
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • 实体框架7审计日志

    我正在将一个旧项目移植到 ASP NET 5 和 Entity Framework 7 我使用数据库优先方法 DNX 脚手架 来创建模型 旧项目基于Entity Framework 4 审计跟踪是通过重写实现的SaveChanges的方法D
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • AspNetCore.SignalR:无法启动未处于初始状态的连接

    我无法让 ASP NET Core SignalR 应用程序正常运行 我有这个服务器端代码 public class PopcornHub Hub private int Users public async Task BroadcastN
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 向每个收件人发送一封包含不同内容的电子邮件(使用抄送字段)

    在你因为这个问题 毫无意义 和 不可能 而驳回之前 请听我说完 问题 我们在使用我们的系统发送的每封电子邮件中实施跟踪像素 即具有唯一 URL 的可下载 GIF 文件 这有助于我们跟踪电子邮件的打开情况 问题是 当我们抄送一些收件人时 跟踪
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函
  • 计算两个日期之间的工作日数?

    在C 中 如何计算business 或工作日 两个日期之间的天数 我以前曾经遇到过这样的任务 并且我已经找到了解决方案 当可以避免的时候 我会避免列举其间的所有日子 这里就是这种情况 正如我在上面的一个答案中看到的那样 我什至没有提到创建一
  • 如何设置 Swashbuckle 与 Microsoft.AspNetCore.Mvc.Versioning

    我们有asp net core webapi 我们添加了Microsoft AspNetCore Mvc Versioning and Swashbuckle拥有招摇的用户界面 我们将控制器指定为 ApiVersion 1 0 Route
  • C# 中成员访问中的问号是什么意思?

    有人可以向我解释一下以下代码中会员访问中的问号是什么意思吗 它是标准 C 的一部分吗 尝试在 Xamarin Studio 中编译此文件时出现解析错误 this AnalyzerLoadFailed Invoke this new Anal

随机推荐

  • 同时调用或调用多个方法?

    如何在asp net中的页面加载中同时调用多个方法 我有 4 个方法可以在页面加载事件中调用 但我想调用所有 4 个方法 而不是等待第一个方法完成然后调用第二个方法 在asp net 4 0中如何实现这一点 首先 重要的是要知道你所做的事情
  • 为什么 spring-websocket 中的 STOMP 功能依赖于 Spring MVC?

    目前 我正在尝试使用 webflux 将 STOMP 与 websockets 结合使用 为了向 STOMP 主题发送消息 我需要使用SimpMessagingTemplate 这是我添加时由 spring boot 自动配置提供的 Ena
  • 将字节数组转换为任意基数

    我有一个字节数组 任意长度 我想使用我自己的基本编码器将此数组编码为字符串 在 NET是标准的Base64编码器 但是如果我想将数组编码为Base62 Base53 or Base13 是否有可能创建这样的通用基础编码器 我知道我可以用简单
  • 无法安装 expo 包并出现错误:yarnpkg 退出时显示非零代码:1 yarnpkg 退出时显示非零代码:1

    我目前正在尝试使用以下命令将我的 Expo SDK 从 36 0 0 更新到至少 37 0 0expo update但是我收到错误 Failed to install expo package with error yarnpkg exit
  • 具有默认参数的 JavaScript 函数

    我目前使用以下函数来检查三个参数以查看是否有任何参数通过 这是在没有发送参数的情况下设置默认值的最佳方法吗 function setupSlideshow t e s e e slideshow s s gt li t t 70 timeo
  • 与我的模型相关,我应该有多少个 DbContext 子类?

    我正在学习 ASP NET MVC 但我遇到了一些问题 到目前为止我读过的教程还没有以涵盖我的方式进行探讨 我尝试过搜索 但没有看到任何询问此问题的问题 不过 如果我错过了现有的 请原谅我 如果我有一个 ASP NET MVC 应用程序 它
  • 如何解决重叠实例

    我有以下代码 转换类似于转换 instance OVERLAPS Transformable a a where transform x x instance OVERLAPPABLE Transformable l l Transform
  • MySQL 上的奇怪完整性错误:#1452

    这有点奇怪 但我会尽力解释 我有 2 个模型 一个代表电子邮件消息 Message 另一个代表销售线索 AffiliateLead 当通过网站提交表单时 系统会生成潜在客户 然后发送电子邮件 消息模型有一个可选的 FK 返回到领导 从消息模
  • 使用 ExtJS 网格列标题中的 ListFilter 进行远程过滤

    我正在使用 ListFilter 插件来过滤网格面板上的结果 列定义是 header Provider filter type list store Ext getStore MyApp store Provider dataIndex p
  • 如何将数据从 iOS 发送回 Flutter?

    我正在尝试让 iOS 将数据发送回 flutter 更具体地说 是控制中心媒体控制 我正在开发一个音乐应用程序 我可以获取从 Flutter 发送到 iOS 的数据 从而允许它显示在媒体控件中 但是 如果我要控制播放暂停下一个上一个 我该如
  • Django:按月/年分组的日期属性的总和

    我想将此查询从 SQL 放入 Django select date format date Y m as month sum quantity as hours from hourentries group by date format d
  • VBA 代码无法连接到 SQL Server 2008

    我的代码无法连接到 Microsoft SQL Server 2008 中的数据库 它尝试连接 但随后出现以下错误 运行时错误 SQL Server 不存在或访问被拒绝 服务器受密码保护 但我认为是我造成的 任何帮助将不胜感激 发生错误的地
  • 如何仅翻转变换矩阵的一个轴?

    我有一个 4x4 变换矩阵 然而 在尝试转换后我注意到这个动作andY 轴的旋转方向相反 其余的都是正确的 我从其他一些 API 获得了这个矩阵 所以可能是坐标系的差异 那么 如何翻转变换矩阵的轴呢 如果只有平移 我可以在 Y 平移上添加减
  • 查找类以按名称实例化,无需命名空间或程序集? (。网)

    我想按名称 字符串 实例化一个类 而不指定命名空间或程序集 像这样 Unity语法 var processor container Resolve
  • HttpClient 与 HttpWebRequest

    我有一个大文件 我必须将其发送到 Web api 客户端 数据是多部分的 问题是 如果文件是通过 http Web 请求发送的 那么它会在 webapi 上快速上传 对于此请求 文件内容直接写入请求流 就好像通过 Httpclient ne
  • 绕过 Rsync 提示“您确定要继续连接吗”

    如何绕过这个问题或添加一个自动回答这个问题的标志 因为我正在尝试编写一个脚本 并且这个问题不断停止 rsync 的过程 因为在提示时无法在脚本中回答这个问题 Set the StrictHostKeyChecking选项no 在配置文件中或
  • OpenCV-Python 中的简单数字识别 OCR

    我正在尝试在 OpenCV Python cv2 中实现 数字识别 OCR 它仅用于学习目的 我想学习 OpenCV 中的 KNearest 和 SVM 功能 我有每个数字 100 个样本 即图像 我想和他们一起训练 有一个样本letter
  • 通过 Java 使用 Selenium Webdriver 缺少 size() 选项

    一直在参加一些课程来提高我使用 Selenium Webdriver 的自动化技能 我没有size 方法作为尝试计算页面内链接数量时的一个选项 我缺少一些罐子吗 导入库 java public static void main String
  • SVG 坐标系 - 点与像素

    阅读通过SVG 1 1 规范 http www w3 org TR SVG11 coords html 我试图理解用于定义初始视口的单位与文档其余部分使用的单位之间的关系 如果视口最初是使用点定义的
  • 我的 $Foo ATL 解决方案中的 ($Foo)PS 项目有何用途?

    在MSVC中创建一个ATL项目似乎创建的不是一个而是两个项目 后者的名称与前者相同 但名称后附加了 PS 第二个项目的目的是什么 我如何判断我是否需要它 COM 支持跨两个不同的线程 两个不同的进程或两台不同的机器进行接口方法调用 这就是所