| Previous | Next |
| CI_S_WORKID_DELETED | CI_S_NO_DOCSTORE |
CI_S_END_OF_ENUMERATION
Indexing document enumeration is complete
CI_S_END_OF_ENUMERATION is HRESULT 268308 (0x00041814) from Indexing Service. AllStat describes it as “There are no more documents to enumerate.” The severity bit indicates a nonfailure result, but the value carries a specific condition that must not be collapsed into plain S_OK.
In the legacy Indexing Service or IFilter pipeline, CI_S_END_OF_ENUMERATION means that there are no more documents to enumerate. CI_S_END_OF_ENUMERATION is actionable success information: the result must be interpreted before the caller advances its workflow.
Where the status is encountered
CI_S_END_OF_ENUMERATIONcan be returned during legacy Indexing Service catalog processing; log the exact method and object state instead of interpreting the constant outside that contract.CI_S_END_OF_ENUMERATIONcan be returned during IFilter text and property extraction; log the exact method and object state instead of interpreting the constant outside that contract.CI_S_END_OF_ENUMERATIONcan be returned during search enumeration, scan scheduling, or catalog administration; log the exact method and object state instead of interpreting the constant outside that contract.
Because CI_S_END_OF_ENUMERATION is informational, a language binding may expose it as success and hide the symbolic distinction. Keep the original HRESULT available until the code-specific branch has run.
Evidence and telemetry
- For
CI_S_END_OF_ENUMERATION, preserve catalog and scope. - For
CI_S_END_OF_ENUMERATION, preserve enumeration snapshot or generation. - For
CI_S_END_OF_ENUMERATION, preserve last work ID. - For
CI_S_END_OF_ENUMERATION, preserve total records consumed. - For
CI_S_END_OF_ENUMERATION, preserve filters or security context.
Also record ci_s_end_of_enumeration_operation, ci_s_end_of_enumeration_state_before, ci_s_end_of_enumeration_state_after, UTC time, process and thread identifiers, component version, and a correlation ID. Support data for CI_S_END_OF_ENUMERATION should use hashes or GUIDs instead of sensitive content wherever possible.
What must be true before accepting it
For CI_S_END_OF_ENUMERATION, verify that all documents returned before the terminal status were processed and the enumerator can be closed. For CI_S_END_OF_ENUMERATION, a valid return path and an application-level completed request are not automatically the same thing.
For CI_S_END_OF_ENUMERATION, determine whether ownership, buffers, callbacks, or resources changed before choosing recovery.
Correct handling and recovery
Commit accumulated results, release enumeration resources, and store the catalog generation and final count. A new enumeration requires a new snapshot or query.
Retry CI_S_END_OF_ENUMERATION only when a documented input or state has changed. Repeat the operation after CI_S_END_OF_ENUMERATION only when evidence shows that an input, resource, or phase has changed.
Diagnostic sequence
- Capture the raw value
0x00041814before wrappers, signed-decimal formatting, exceptions, or generic success handling replaceCI_S_END_OF_ENUMERATION. - Identify the operation that returned
CI_S_END_OF_ENUMERATION, including interface or callback, component build, thread, process, and the state-machine phase. - For
CI_S_END_OF_ENUMERATION, prove the decisive condition: all documents returned before the terminal status were processed and the enumerator can be closed. - Inspect every output, count, status array, buffer, callback, task state, media timestamp, transaction vote, or security token that remains part of the
CI_S_END_OF_ENUMERATIONcontract. - Compare state immediately before and after
CI_S_END_OF_ENUMERATION; success severity does not guarantee that optional work or the caller’s intended high-level action completed. - Reproduce
CI_S_END_OF_ENUMERATIONwith the smallest input that retains the same condition, then alter only the recorded cause before repeating the operation.
Difference from nearby results
CI_S_END_OF_ENUMERATION must be distinguished from ordinary S_OK and from failure-severity values in the same API family; its documented state changes control the next action.
The code adjacent to CI_S_END_OF_ENUMERATION may require a different action even when both values have success severity.
Developer and administrator guidance
Code should branch on CI_S_END_OF_ENUMERATION before a generic SUCCEEDED(hr) path whenever outputs, continuation, cancellation, or recovery differ. Telemetry should retain CI_S_END_OF_ENUMERATION, 0x00041814, the producing method, and a correlation ID.
For CI_S_END_OF_ENUMERATION, document ownership of retry, cancellation, cleanup, and user messaging. A system-wide reset is rarely justified by CI_S_END_OF_ENUMERATION; prefer the smallest component-specific correction.
Practical scenario
An administrative tool enumerates catalog documents until this status, then compares the final count with catalog statistics and closes the connection.
A regression test should reproduce CI_S_END_OF_ENUMERATION, assert the relevant outputs and state, then change only the decisive condition and verify the expected neighboring result or ordinary completion.
References
- Microsoft: Filter interface values — official Microsoft material used to interpret
CI_S_END_OF_ENUMERATION. - Microsoft: About Indexing Service filters — official Microsoft material used to interpret
CI_S_END_OF_ENUMERATION. - Microsoft: Using custom filters — official Microsoft material used to interpret
CI_S_END_OF_ENUMERATION. - Microsoft: HRESULT values — official Microsoft material used to interpret
CI_S_END_OF_ENUMERATION.
Looking for a different code? Search another status or error code.