【问题标题】:Want to know Windows Clipboard Internals想了解 Windows 剪贴板内部结构
【发布时间】:2011-11-17 17:05:05
【问题描述】:

我有兴趣学习 Windows 系统内部结构和工作原理。我倾向于在 Windows 上学习系统编程。在这种情况下,我很想知道有关 Windows 剪贴板内部功能的一些事情:

  • 当我们选择一些文本、图像等并按下 Ctrl + C ?
  • 当我们在不同的应用程序中按下 Ctrl + V 时,究竟会发生什么?
  • 复制的数据究竟在哪里?复制的数据是否进入内核模式内存 - 由所有进程共享?
  • 复制的数据如何可供其他进程使用?

我想从系统程序员的角度了解以上问题的答案。

另外,分享任何讨论 Windows 剪贴板内部结构的资源。

【问题讨论】:

标签: windows clipboard internals systems-programming


【解决方案1】:

我的网站上有一些很好的资源:@​​987654321@ 它讨论了剪贴板查看器的实现、典型的错误、该做什么和不该做什么。

基本上,剪贴板是一个共享内存区域,您可以将数据复制到其中(也称为“复制”,例如响应用户按 Ctrl+C)并从中复制数据(也称为“粘贴”)。 数据可以同时以数十种常见格式和任意数量的程序员定义格式表示。

不可能完全“备份”剪贴板并将其恢复原样,而不影响其他程序,并导致负面的用户体验。查看“延迟渲染”以了解原因,并考虑当 Excel 用户在电子表格中复制 5000 行 x 255 列并按下 Ctrl+V 时会发生什么。了解这一点,您就会了解延迟渲染的魔力(和陷阱)。

【讨论】:

  • 所以“共享内存”是虚拟内存中的一个固定块,对吧?所以它有一个预定的大小?
  • flow2k - 大小由将数据复制到剪贴板的程序确定。它分配一个足够大的块来保存数据。所以大小可以相差很大。
猜你喜欢
  • 2019-01-08
  • 2010-09-21
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 2014-12-06
  • 2017-02-11
相关资源
最近更新 更多