What does HRESULT 0x80041706 (FILTER_E_NO_VALUES) mean?

 
Previous Next
FILTER_E_NO_TEXT FILTER_E_EMBEDDING_UNAVAILABLE

FILTER_E_NO_VALUES

The current filter chunk does not expose property values

FILTER_E_NO_VALUES is HRESULT 0x80041706 (-2147215610 signed; 2147751686 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF for these values), and code field is 0x1706. Its failure-severity encoding reports that GetValue was used for a non-value chunk, so the caller must follow STAT_CHUNK. AllStat describes the value as “No values in current chunk.”

Where the result belongs

FILTER_E_NO_VALUES belongs to calling IFilter::GetValue for a chunk that is text-bearing or otherwise not a value chunk. The decisive interpretation is that the consumer violates the chunk-type contract rather than exhausting a valid value sequence. For FILTER_E_NO_VALUES, 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_VALUES, 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_VALUES 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.

Concrete causes

  • For FILTER_E_NO_VALUES, check CHUNK_TEXT is active when GetValue is called.
  • For FILTER_E_NO_VALUES, check the property flag was read from the wrong STAT_CHUNK.
  • For FILTER_E_NO_VALUES, check a generic pipeline probes both methods unconditionally.

The useful hypothesis for FILTER_E_NO_VALUES must explain both calling IFilter::GetValue for a chunk that is text-bearing or otherwise not a value chunk and the documented condition. Compare the failing case with a control that preserves STAT_CHUNK flags and property specification and changes only method call trace for the active chunk; this prevents unrelated environment differences from dominating the FILTER_E_NO_VALUES test.

Evidence to retain

  • STAT_CHUNK flags and property specification; preserve the observation under the FILTER_E_NO_VALUES correlation record.
  • Method call trace for the active chunk; preserve the observation under the FILTER_E_NO_VALUES correlation record.
  • Chunk id ownership across threads; preserve the observation under the FILTER_E_NO_VALUES correlation record.
  • Returned PROPVARIANT pointer state; preserve the observation under the FILTER_E_NO_VALUES correlation record.

For FILTER_E_NO_VALUES, capture STAT_CHUNK flags and property specification before releasing objects, closing handles or reconnecting. Retain the raw HRESULT with method call trace for the active chunk, component version, UTC timestamp and correlation ID. Bound the FILTER_E_NO_VALUES telemetry to diagnostic metadata because document content, credentials and unrestricted query text may be sensitive.

Diagnostic path

  1. Bind extraction behavior to the current successful GetChunk result. Associate this observation specifically with FILTER_E_NO_VALUES.
  2. Call GetText only for text chunks and GetValue only for value chunks. Associate this observation specifically with FILTER_E_NO_VALUES.
  3. Check that asynchronous work does not reorder chunk metadata. Associate this observation specifically with FILTER_E_NO_VALUES.
  4. Run Microsoft filter tests against the handler and consumer. Associate this observation specifically with FILTER_E_NO_VALUES.

Change one variable per FILTER_E_NO_VALUES control run. Preserve the component version and target identity, then alter only the condition described as the consumer violates the chunk-type contract rather than exhausting a valid value sequence. This isolates whether FILTER_E_NO_VALUES is causal rather than merely repeatable.

Recovery and retry

Correct the caller dispatch or move to the next chunk. Repeated GetValue calls against this chunk should not be treated as transient failures. For FILTER_E_NO_VALUES, record whether calling IFilter::GetValue for a chunk that is text-bearing or otherwise not a value chunk produced any content, update or state transition before returning. If completion remains unknown, the FILTER_E_NO_VALUES path must not replay non-idempotent work until the owner confirms final state.

The retry gate for FILTER_E_NO_VALUES should be a concrete change in STAT_CHUNK flags and property specification or method call trace for the active chunk. A timer alone cannot demonstrate that the FILTER_E_NO_VALUES contract condition has changed.

What must not be inferred

It does not prove that the document has no metadata or that a requested property GUID is invalid. Without the call boundary for calling IFilter::GetValue for a chunk that is text-bearing or otherwise not a value chunk, FILTER_E_NO_VALUES also cannot identify which wrapper or configuration layer introduced the condition.

Nearby results

FILTER_E_NO_MORE_VALUES follows a valid value stream; FILTER_E_NO_VALUES means the selected chunk has none. In FILTER_E_NO_VALUES telemetry, preserve neighboring constants separately because the same visible symptom may require a different caller action, owner or recovery gate.

Developer and administrator actions

  • The FILTER_E_NO_VALUES investigation should record At the code boundary, keep STAT_CHUNK flags and property specification beside the returned HRESULT.
  • The FILTER_E_NO_VALUES investigation should record In telemetry, correlate method call trace for the active chunk with the target and component generation.
  • The FILTER_E_NO_VALUES investigation should record For regression coverage, force the documented condition: the consumer violates the chunk-type contract rather than exhausting a valid value sequence.
  • The FILTER_E_NO_VALUES investigation should record For operations staff, expose the corrective state change rather than a generic retry button.
  • The FILTER_E_NO_VALUES investigation should record After remediation, validate one known-good control and the original failing case.

Operational example

A diagnostic tool calls both extraction methods for every chunk. It records this HRESULT as expected for text chunks instead of reporting corruption. In this scenario, handling FILTER_E_NO_VALUES 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.