Pismo File Mount如何将ZIP文件安装到Windows资源管理器中?

时间:2014-06-05 11:38:26

标签: c++ zip windows-explorer

我多年来一直在使用Pismo File Mount,我一直想知道它是如何运作的。

假设我正在开发一个创建类似于ZIP format的包格式的应用程序。为了便于访问,我想创建一个类似于Pismo File Mount工作方式的 shell扩展。对于那些之前没有使用Pismo File Mount的人来说,这是它的工作原理:

  1. 用户在Windows资源管理器中右键单击ZIP文件。
  2. 然后,用户单击“Mount”以安装ZIP文件。
  3. 用户现在可以立即访问他/她的文件。
  4. 用户无需提取ZIP文件即可查看其内容。
  5. 有一个问题。我想要使用Pismo File Mount API,可能出于商业或法律等各种原因。

    问题是,根据Windows API和C ++,Pismo File Mount如何以编程方式将自身集成到Windows资源管理器中?

3 个答案:

答案 0 :(得分:1)

听起来像一个相当普通的shell扩展。 Explorer具有强大的扩展机制,允许它列出非文件对象,如打印机和zip文件的内容。特定细节(列和行)由DLL提供。

你可以通过拉上一组图像来观察它;普通的缩略图视图可能无法正常工作,因为资源管理器的那部分通常不会被复制。

答案 1 :(得分:1)

有两种方式:

  1. Shell命名空间扩展。 shell命名空间扩展创建的文件夹不是实际的文件系统文件夹,此类文件夹中文件的可访问性通常仅限于Explorer本身和应用程序知道shell扩展以及使用它们的方法。

  2. 文件系统过滤器驱动程序,它在现有磁盘上创建虚拟目录。所有应用程序都将此类目录视为真实目录,其中这些应用程序可以读取和写入文件和子目录。所有文件系统操作都经过这样的驱动程序

  3. Pismo File Mount通过过滤器驱动程序AFAIK工作。

    我们的CallbackFilter产品提供了一种创建虚拟目录和文件的方法。它包含一个驱动程序,并调用您的用户模式代码进行实际操作。但是过滤器方法有点复杂 - 由于过滤器驱动程序堆栈和文件系统驱动程序的体系结构不同,使用文件系统驱动程序创建的虚拟磁盘(例如,使用我们的回调文件系统产品)更容易实现和管理。

答案 2 :(得分:1)

我写了Pismo File Mount,以及PFM Audit Package中包含的ZIP阅读器。

对这个问题没有任何建议或现实可回答的答案。要完成PFM在C / C ++中对Windows API(内核和用户)所做的事情,需要花费数十万行代码和大量时间投资。

PFM构建为文件系统驱动程序(内核模块),用户模式支持DLL和可执行文件。驱动程序使用协议与用户模式格式化代码进行通信(例如)解码ZIP文件格式,并通过内核模式驱动程序将内容提供给客户端应用程序。