| 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_VALUEScorrelation record. - Method call trace for the active chunk; preserve the observation under the
FILTER_E_NO_VALUEScorrelation record. - Chunk id ownership across threads; preserve the observation under the
FILTER_E_NO_VALUEScorrelation record. - Returned PROPVARIANT pointer state; preserve the observation under the
FILTER_E_NO_VALUEScorrelation 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
- Bind extraction behavior to the current successful GetChunk result. Associate this observation specifically with
FILTER_E_NO_VALUES. - Call GetText only for text chunks and GetValue only for value chunks. Associate this observation specifically with
FILTER_E_NO_VALUES. - Check that asynchronous work does not reorder chunk metadata. Associate this observation specifically with
FILTER_E_NO_VALUES. - 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_VALUESinvestigation should record At the code boundary, keep STAT_CHUNK flags and property specification beside the returned HRESULT. - The
FILTER_E_NO_VALUESinvestigation should record In telemetry, correlate method call trace for the active chunk with the target and component generation. - The
FILTER_E_NO_VALUESinvestigation 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_VALUESinvestigation should record For operations staff, expose the corrective state change rather than a generic retry button. - The
FILTER_E_NO_VALUESinvestigation 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
- Microsoft: Filter-Interface values — official contract information relevant to
FILTER_E_NO_VALUES. - Microsoft: IFilter::GetValue — official contract information relevant to
FILTER_E_NO_VALUES. - Microsoft: IFilter::GetChunk — official contract information relevant to
FILTER_E_NO_VALUES. - Microsoft: testing filter handlers — official contract information relevant to
FILTER_E_NO_VALUES. - Microsoft: IFilter interface — official contract information relevant to
FILTER_E_NO_VALUES.
Looking for a different code? Search another status or error code.