Implementing and Exporting the DLL Entry Points

Note

Indexing Service is no longer supported as of Windows XP and is unavailable for use as of Windows 8. Instead, use Windows Search for client side search and Microsoft Search Server Express for server side search.

 

Each filter DLL (denoted by filter.dll in this section) must implement and export the following entry points. These entry points are typically exported using a module-definition (.def) file for the filter or by using the __declspec(dllexport) keyword. The DLL file can be registered to be in any folder, but it usually resides in the %SystemRoot%\system32 folder.

DllRegisterServer

The DllRegisterServer entry point registers the DLL as a persistent handler in the registry. You register the DLL by running the regsvr32.exe program with the filter DLL file name as an argument.

regsvr32.exe %SystemRoot%\system32\filter.dll

All the sample filters use macros defined in the header file filtreg.hxx to implement the registration entry point.

DllUnregisterServer

The DllUnregisterServer entry point removes the DLL as a persistent handler in the registry. You unregister the DLL by running the regsvr32.exe program with the /u flag:

regsvr32.exe /u %SystemRoot%\system32\filter.dll

All the sample filters use macros, defined in the header file filtreg.hxx, to implement the unregistration entry point.

DllGetClassObject

The content indexing client calls the DllGetClassObject entry point, through COM, to create a class factory object for the filter and to get a pointer to the class factory interface of that object.

DllCanUnloadNow

The content-indexing client calls the DllCanUnloadNow entry point, through COM, to determine whether it is possible to unload the filter DLL. The filter is unloaded after it is unused for an interval of time as specified by the FilterIdleTimeOut registry value.