Persistent handlers are tools that Windows' search engine uses to find files. The handlers are small extensions of the Windows Shell, registered to look for particular software objects stored on the computer. Using persistent handlers cuts down the amount of searching the Shell has to do when you ask for a search.
Windows Shell organizes the folders and files on your computer's various drives into a hierarchy so that you and the software on your computer can access them efficiently. Shell extension handlers modify the actions that the Shell can perform; if you right-click on a file to modify it, the handler for that file type will allow you to specify other files of the same type you want to modify. Without the handler, the Shell would apply the same treatment to all files of that type.
Windows Shell can implement a number of handlers. A data handler gives you multiple clipboard formats when you drag and drop a file. An icon handler lets you replace individual file icons rather than having Windows Shell replace all the icons of that file type. The shortcut menu handler adds items to the Shell short-cut menu on a file-by-file basis. Other extensions include the copy hook handler, the icon overlay handler and the search handler.
Windows uses persistent handlers to look for a class identifier representing a particular class of object – files or folders, for instance – or for a file name extension. A persistent handler works with the "persistent state" of a software object – an internal state that the computer has stored in memory – and coordinates access to it. Microsoft originally developed persistent handlers for its Index Service, but now handlers are run from Windows Search, which interacts indirectly with Windows Shell.
Multiple persistent handlers can interact with an object without interfering with each other, provided they each deal with a different aspect or property of the object. When you use persistent handlers to create a search, any search for extensions takes precedence over one looking for objects of a particular class. Helper functions carry out certain operations to improve persistent handler efficiency; for instance, "LocateCatalogs" finds the catalog that indexes a particular directory.