These properties are for custom protocol handlers implement ISearchProtocol/IUrlAccessor.
If you have a container which has complete knowledge of the items that have changed in the store, System.Search.IsClosedDirectory and System.Search.IsFullyContained allows you to prevent incremental crawls through your hierarchy.
The way this works is that if you are a processing a root container url with complete knowledge that if the container's date hasn't changed then none of the children have changed either...aka, you are a closed container and all of your children urls are fully contained. You indicate this by emitting IsClosedDirectory for the root container.
At the end of an incremental crawl, all URLs that have not been emitted will be assumed as deleted, unless they have the IsFullyContained property on them (remember, the incremental crawl was short-circuited because the root store knew nothing was changed.)
An example: Let's say that XYZ://foobar is a root store and at any time you know that if XYZ://foobar has not changed nothing below it has changed. Your protocol handler would then do the following when processing urls:
XYZ://foobar --> IFilter should emit System.Search.IsClosedDirectory. This property tells the indexer that if nothing is changed, don't enumerate all of the child urls
XYZ://foobar/childurlN --> IFilter should emit System.Search.IsFullyContained. This property tellst the indexer that this url should not be deleted at the end of an incremental crawl because it is fully contained by the root store.