A copy hook handler is a shell extension that the shell calls before copying, moving, deleting, or renaming a folder object. The copy hook handler does not perform the task itself, but the handler provides approval for the task. When the shell receives approval from the copy hook handler, it performs the actual file system operation (that is, copies, moves, deletes, or renames). Copy hook handlers are not informed about the success of the operation, so they cannot monitor actions that occur to folder objects.
The shell initializes the copy hook handler interface directly ¾ that is, without using an IShellExtInit or IPersistFile interface first. A folder object can have multiple copy hook handlers. The copy hook handler interface has one member function, CopyCallBack, in addition to the standard IUnknown member functions.
The shell calls the CopyCallBack member function before it copies, moves, deletes, or renames a folder object. The function returns an integer value that indicates whether the shell should perform the operation. The shell will call each copy hook handler registered for a folder object until either all the handlers have been called or any handler returns the IDCANCEL value. The handler can also return the IDYES value to specify that the operation should be carried out or the IDNO value to specify that the operation should not be performed.