ICopyHook接口是一个基于COM的界面,用于创建一个复制钩子处理程序(一个shell扩展),用于确定是否可以移动,复制,重命名或删除shell文件夹或打印机对象。在执行其中一个操作之前,shell调用ICopyHook::CopyCallback.
复制钩子处理程序(即OLE进程内服务器(DLL))不执行任务本身,但会批准或不批准操作。如果shell从复制钩子处理程序获得批准,则它执行文件系统操作。复制钩子处理程序不会被通知操作的成功,所以不能监视对文件夹对象的操作,除非通过FindFirstChangeNotify.
文件夹对象可以有多个复制钩子处理程序。例如,即使shell已经具有为特定文件夹对象注册的复制钩子处理程序,您仍然可以注册自己的一个。如果为对象注册了两个或多个复制钩子处理程序,则在执行指定的文件系统操作之前,shell会简单地调用它们。
该shell直接初始化ICopyHook,而不先使用IShellExtInit或IPersistFile接口。
CopyCallback返回一个整数值,指示shell是否应该执行该操作。shell将调用为文件夹对象注册的每个复制钩子处理程序,直到所有处理程序被调用或其中一个返回了除IDYES之外的值。处理程序还可以返回IDYES以指定应执行操作,或IDNO或IDCANCEL来指定应停止该操作。
何时实施
实现复制钩子处理程序,例如对于共享文件夹,当您想要能够控制何时或如果。这些文件系统操作在给定对象上执行。
何时使用
你不直接调用这个shell扩展。ICopyHook::CopyCallback在移动,复制,重命名或删除shell文件夹对象之前由shell调用。
Vtable Order中的方法
IUnknown方法 | 描述 |
QueryInterface | 返回指向支持的接口的指针。 |
AddRef | 增加引用计数。 |
发布 | 减少引用计数。 |
ICopyHook方法 | 描述 |
CopyCallback | 确定是否允许或禁止文件夹对象上的移动,复制,删除或重命名操作。 |