What does HRESULT 0x80041705 (FILTER_E_NO_TEXT) mean?

 
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

FILTER_E_NO_TEXT 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. For FILTER_E_NO_TEXT, keep the symbolic constant and method stage together in logs; its hexadecimal value alone cannot identify the owning transition or input.

For FILTER_E_NO_TEXT, the IFilter contract is stateful: GetChunk selects a chunk, then GetText or GetValue consumes content according to STAT_CHUNK flags. In the FILTER_E_NO_TEXT 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_NO_TEXT: CHUNK_VALUE was returned but the consumer calls GetText.
  • FILTER_E_NO_TEXT: Chunk flags were cached from a previous chunk.
  • FILTER_E_NO_TEXT: A filter emits metadata-only content.

The useful hypothesis for FILTER_E_NO_TEXT 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 FILTER_E_NO_TEXT test.

Incident record

  • For FILTER_E_NO_TEXT, check current STAT_CHUNK flags and attribute.
  • For FILTER_E_NO_TEXT, check exact GetChunk/GetText sequence.
  • For FILTER_E_NO_TEXT, check chunk id used by the consumer.
  • For FILTER_E_NO_TEXT, check filter conformance output.

For FILTER_E_NO_TEXT, 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 FILTER_E_NO_TEXT telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.

Step-by-step diagnosis

  1. Inspect flags immediately after each successful GetChunk. Associate this observation specifically with FILTER_E_NO_TEXT.
  2. Dispatch CHUNK_TEXT to GetText and CHUNK_VALUE to GetValue. Associate this observation specifically with FILTER_E_NO_TEXT.
  3. Remove stale chunk metadata from asynchronous queues. Associate this observation specifically with FILTER_E_NO_TEXT.
  4. Confirm the filter did not change flags after returning the chunk. Associate this observation specifically with FILTER_E_NO_TEXT.

Change one variable per FILTER_E_NO_TEXT 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 FILTER_E_NO_TEXT 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. For FILTER_E_NO_TEXT, 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 FILTER_E_NO_TEXT path must not replay non-idempotent work until the owner confirms final state.

The retry gate for FILTER_E_NO_TEXT should be a concrete change in current STAT_CHUNK flags and attribute or exact GetChunk/GetText sequence. A timer alone cannot demonstrate that the FILTER_E_NO_TEXT 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, FILTER_E_NO_TEXT also cannot identify which wrapper or configuration layer introduced the condition.

Adjacent contract states

FILTER_E_NO_MORE_TEXT exhausts a valid text chunk; FILTER_E_NO_TEXT identifies a nontext current chunk. In FILTER_E_NO_TEXT 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 FILTER_E_NO_TEXT correlation record.
  • In telemetry, correlate exact GetChunk/GetText sequence with the target and component generation; preserve the observation under the FILTER_E_NO_TEXT 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 FILTER_E_NO_TEXT correlation record.
  • For operations staff, expose the corrective state change rather than a generic retry button; preserve the observation under the FILTER_E_NO_TEXT correlation record.
  • After remediation, validate one known-good control and the original failing case; preserve the observation under the FILTER_E_NO_TEXT 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 FILTER_E_NO_TEXT at its real contract boundary prevents the application from collapsing a precise state into an unhelpful generic “search failed” message.

Official Microsoft references


Looking for a different code? Search another status or error code.