| Previous | Next |
| FILTER_E_IN_USE | FILTER_E_NO_SUCH_PROPERTY |
FILTER_E_NOT_OPEN
No document is open in the filter instance
FILTER_E_NOT_OPEN is HRESULT 0x80041739 (-2147215559 signed; 2147751737 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF for these values), and code field is 0x1739. For FILTER_E_NOT_OPEN, standard HRESULT severity rules classify the value as a failure. AllStat describes the value as “The document is not opened.”
Interpretation in context
FILTER_E_NOT_OPEN belongs to requesting extraction or close behavior before the handler has successfully opened a source. The decisive interpretation is that the caller and filter disagree about lifecycle state. For FILTER_E_NOT_OPEN, keep the symbolic constant and method stage together in logs; its hexadecimal value alone cannot identify the owning transition or input.
For FILTER_E_NOT_OPEN, the IFilter contract is stateful: GetChunk selects a chunk, then GetText or GetValue consumes content according to STAT_CHUNK flags. In the FILTER_E_NOT_OPEN investigation, method order and filter-instance ownership are therefore part of the evidence. This context narrows the responsible component without replacing the code-specific checks below.
Conditions to test
FILTER_E_NOT_OPEN: Initialization failed but later methods still execute.FILTER_E_NOT_OPEN: Cleanup runs twice.FILTER_E_NOT_OPEN: An instance was returned to a pool after close.FILTER_E_NOT_OPEN: One thread closes state another thread expects to use.
The useful hypothesis for FILTER_E_NOT_OPEN must explain both requesting extraction or close behavior before the handler has successfully opened a source and the documented condition. Compare the failing case with a control that preserves instance identity and lifecycle transitions and changes only result of the preceding open/init call; this prevents unrelated environment differences from dominating the FILTER_E_NOT_OPEN test.
Incident record
- For
FILTER_E_NOT_OPEN, check instance identity and lifecycle transitions. - For
FILTER_E_NOT_OPEN, check result of the preceding open/init call. - For
FILTER_E_NOT_OPEN, check method invoked after state loss. - For
FILTER_E_NOT_OPEN, check thread and cancellation ownership.
For FILTER_E_NOT_OPEN, capture instance identity and lifecycle transitions before releasing objects, closing handles or reconnecting. Retain the raw HRESULT with result of the preceding open/init call, component version, UTC timestamp and correlation ID. Bound the FILTER_E_NOT_OPEN telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.
Step-by-step diagnosis
- Find the last successful state transition for this instance. Associate this observation specifically with
FILTER_E_NOT_OPEN. - Stop the pipeline immediately after a failed open. Associate this observation specifically with
FILTER_E_NOT_OPEN. - Make close idempotent at the wrapper layer. Associate this observation specifically with
FILTER_E_NOT_OPEN. - Prove that each task owns an independent filter object. Associate this observation specifically with
FILTER_E_NOT_OPEN.
Change one variable per FILTER_E_NOT_OPEN control run. Preserve the component version and target identity, then alter only the condition described as the caller and filter disagree about lifecycle state. This isolates whether FILTER_E_NOT_OPEN is causal rather than merely repeatable.
Retry decision
Open and initialize a source successfully before extraction, or replace the invalid instance. Repeating the out-of-order method is not a retry. For FILTER_E_NOT_OPEN, record whether requesting extraction or close behavior before the handler has successfully opened a source produced any content, update or state transition before returning. If completion remains unknown, the FILTER_E_NOT_OPEN path must not replay non-idempotent work until the owner confirms final state.
The retry gate for FILTER_E_NOT_OPEN should be a concrete change in instance identity and lifecycle transitions or result of the preceding open/init call. A timer alone cannot demonstrate that the FILTER_E_NOT_OPEN contract condition has changed.
What the value cannot establish
It does not mean the source path is missing or inaccessible; the call may never have reached the source. Without the call boundary for requesting extraction or close behavior before the handler has successfully opened a source, FILTER_E_NOT_OPEN also cannot identify which wrapper or configuration layer introduced the condition.
Adjacent contract states
FILTER_E_ALREADY_OPEN detects a second open; FILTER_E_NOT_OPEN detects use with no active object. In FILTER_E_NOT_OPEN telemetry, preserve neighboring constants separately because the same visible symptom may require a different caller action, owner or recovery gate.
Developer and administrator actions
- At the code boundary, keep instance identity and lifecycle transitions beside the returned HRESULT; preserve the observation under the
FILTER_E_NOT_OPENcorrelation record. - In telemetry, correlate result of the preceding open/init call with the target and component generation; preserve the observation under the
FILTER_E_NOT_OPENcorrelation record. - For regression coverage, force the documented condition: the caller and filter disagree about lifecycle state; preserve the observation under the
FILTER_E_NOT_OPENcorrelation record. - For operations staff, expose the corrective state change rather than a generic retry button; preserve the observation under the
FILTER_E_NOT_OPENcorrelation record. - After remediation, validate one known-good control and the original failing case; preserve the observation under the
FILTER_E_NOT_OPENcorrelation record.
Concrete scenario
An error handler closes a filter and the normal completion path closes it again. State-machine assertions identify the double cleanup. In this scenario, handling FILTER_E_NOT_OPEN at its real contract boundary prevents the application from collapsing a precise state into an unhelpful generic “search failed” message.
Official Microsoft references
- Microsoft: Content-Indexing values — official contract information relevant to
FILTER_E_NOT_OPEN. - Microsoft: IFilter interface — official contract information relevant to
FILTER_E_NOT_OPEN. - Microsoft: testing filter handlers — official contract information relevant to
FILTER_E_NOT_OPEN. - Microsoft: filter handlers in Windows Search — official contract information relevant to
FILTER_E_NOT_OPEN. - Microsoft: Filter-Interface values — official contract information relevant to
FILTER_E_NOT_OPEN.
Looking for a different code? Search another status or error code.