| Previous | Next |
| FILTER_E_ACCESS | FILTER_E_NO_VALUES |
FILTER_E_NO_TEXT
The current filter chunk does not contain text
FILTER_E_NO_TEXT is HRESULT 0x80041705 (-2147215611 signed; 2147751685 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF for these values), and code field is 0x1705. Its failure-severity encoding reports a method/chunk-type mismatch, not necessarily a defect in the source document. AllStat describes the value as “No text in current chunk.”
Interpretation in context
This result belongs to calling IFilter::GetText when STAT_CHUNK describes a property-value chunk or another nontext chunk. The decisive interpretation is that the caller selected the wrong extraction method for the current chunk type. Keep the symbolic constant and method stage together in logs; its hexadecimal value alone cannot identify the owning transition or input.
The IFilter contract is stateful: GetChunk selects a chunk, then GetText or GetValue consumes content according to STAT_CHUNK flags. In the result 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
- This result: CHUNK_VALUE was returned but the consumer calls GetText.
- This result: Chunk flags were cached from a previous chunk.
- This result: A filter emits metadata-only content.
The useful hypothesis for it must explain both calling IFilter::GetText when STAT_CHUNK describes a property-value chunk or another nontext chunk and the documented condition. Compare the failing case with a control that preserves current STAT_CHUNK flags and attribute and changes only exact GetChunk/GetText sequence; this prevents unrelated environment differences from dominating the result test.
Incident record
- check current STAT_CHUNK flags and attribute.
- check exact GetChunk/GetText sequence.
- check chunk id used by the consumer.
- check filter conformance output.
Capture current STAT_CHUNK flags and attribute before releasing objects, closing handles or reconnecting. Retain the raw HRESULT with exact GetChunk/GetText sequence, component version, UTC timestamp and correlation ID. Bound the result telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.
Step-by-step diagnosis
- Inspect flags immediately after each successful GetChunk. Associate this observation specifically with it.
- Dispatch CHUNK_TEXT to GetText and CHUNK_VALUE to GetValue. Associate this observation specifically with it.
- Remove stale chunk metadata from asynchronous queues. Associate this observation specifically with it.
- Confirm the filter did not change flags after returning the chunk. Associate this observation specifically with it.
Change one variable per it control run. Preserve the component version and target identity, then alter only the condition described as the caller selected the wrong extraction method for the current chunk type. This isolates whether it is causal rather than merely repeatable.
Retry decision
Use the method indicated by STAT_CHUNK or advance to the next chunk. Retrying GetText is a contract error in the caller. Record whether calling IFilter::GetText when STAT_CHUNK describes a property-value chunk or another nontext chunk produced any content, update or state transition before returning. If completion remains unknown, the path must not replay non-idempotent work until the owner confirms final state.
The retry gate for it should be a concrete change in current STAT_CHUNK flags and attribute or exact GetChunk/GetText sequence. A timer alone cannot demonstrate that the result contract condition has changed.
What the value cannot establish
It does not say the whole document lacks text; later chunks may contain searchable text. Without the call boundary for calling IFilter::GetText when STAT_CHUNK describes a property-value chunk or another nontext chunk, it also cannot identify which wrapper or configuration layer introduced the condition.
Adjacent contract states
FILTER_E_NO_MORE_TEXT exhausts a valid text chunk; it identifies a nontext current chunk. In it 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 current STAT_CHUNK flags and attribute beside the returned HRESULT; preserve the observation under the result correlation record.
- In telemetry, correlate exact GetChunk/GetText sequence with the target and component generation; preserve the observation under the result correlation record.
- For regression coverage, force the documented condition: the caller selected the wrong extraction method for the current chunk type; preserve the observation under the result correlation record.
- For operations staff, expose the corrective state change rather than a generic retry button; preserve the observation under the result correlation record.
- After remediation, validate one known-good control and the original failing case; preserve the observation under the result correlation record.
Concrete scenario
A parallel extractor associates the previous chunk flags with a new chunk and calls GetText. Serializing chunk state fixes the method mismatch. In this scenario, handling it at its real contract boundary prevents the application from collapsing a precise state into an unhelpful generic “search failed” message.
Official Microsoft references
- Microsoft: Filter-Interface values — official contract information relevant to it.
- Microsoft: IFilter::GetText
- Microsoft: IFilter::GetChunk
- Microsoft: testing filter handlers
- Microsoft: IFilter interface
Looking for a different code? Search another status or error code.
