| Previous | Next |
| QPLIST_E_CANT_OPEN_FILE | QPLIST_E_EXPECTING_NAME |
QPLIST_E_READ_ERROR
The property-list file could not be read completely
QPLIST_E_READ_ERROR is the failure HRESULT 0x80041652 (-2147215790 signed; 2147751506 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF), and code is 0x1652. AllStat describes it as “Read error in file.”
Operation and state
This result belongs to legacy Windows property-list parsing and is returned while reading bytes from an already opened property-list source. The exact condition is: a short read, concurrent replacement, storage error, truncation or encoding defect interrupts input. This stage matters because converting the result to a generic COM failure removes the information needed to choose the owner and retry policy.
This value belongs to the legacy property-list parser used to describe indexed properties and their types. Diagnose the external list as structured configuration: preserve line, column, token, type grammar and the property-list version instead of treating the file as arbitrary text. The exact public message comes from the legacy SDK contract; current property-system documentation does not replace the property-list grammar that rejected this file.
Failure paths to examine
- Retrying this result with the same file size and identifier leaves the decisive contract violation intact.
- This result can appear when read offset disagrees with the state expected while reading bytes from an already opened property-list source.
- a stale or transformed encoding marker can make the component observe that a short read, concurrent replacement, storage error, truncation or encoding defect interrupts input.
- an incomplete hash before and after hides the distinction needed to separate this HRESULT from a later catalog or service failure.
- changes in concurrent writer evidence between validation and execution can reproduce the result even when the user-visible input looks unchanged.
The strongest hypothesis for it must account for the operation—reading bytes from an already opened property-list source—and the documented condition. Rejection of the property list does not yet distinguish file access, tokenization, type composition, GUID syntax or duplicate-definition failure.
Data to collect first
- use file size and identifier to test whether the failure belongs to parsing, execution, indexing or capability negotiation.
- preserve read offset before objects or work items are released.
- associate encoding marker with the exact UTC timestamp and correlation identifier.
- compare failing and known-good values for hash before and after under the same provider or handler version.
- record the source and normalization path of concurrent writer evidence, not only its display form.
- use property-list file identity and hash to test whether the failure belongs to parsing, execution, indexing or capability negotiation.
Evidence for it should reflect what the component actually received. Hash the complete file if it is sensitive while retaining encoding, line, column, raw token class and the surrounding property declaration.
Step-by-step diagnosis
- Capture file size and identifier and read offset at the call boundary that returns this result.
- confirm the operation reached reading bytes from an already opened property-list source with the intended encoding marker.
- perform the decisive check: capture the failing offset, requested/returned byte count and stable file identity.
- reduce the case until changing hash before and after alone changes the HRESULT or proves it irrelevant.
- apply the recovery only after verifying concurrent writer evidence; preserve the original result for comparison.
A useful control for it changes one dimension at a time. Begin with a one-property list accepted by the same parser, then restore the failing declaration token by token while preserving encoding and line endings.
Continuation policy
Make the file stable, verify its complete hash and replace it atomically from a trusted copy when corrupt. Retry it only after the responsible input or state changes and the previous operation has completed or been cancelled. Delay cannot repair a deterministic file, token or type-grammar defect; retry only after the property list or its readable source changes.
Limits of this HRESULT
It does not prove that every property definition is unusable or that reindexing is required; it identifies a property-list read or grammar boundary. Without code-specific evidence for it, the value also cannot identify which wrapper, configuration, handler or service transition introduced the condition.
Distinguishing similar results
QPLIST_E_CANT_OPEN_FILE fails before a usable handle exists. Keep the symbolic HRESULT beside the stage name in telemetry because nearby constants may require different owners, user messages and retry rules despite the same visible symptom.
Developer and administrator guidance
Retain the property-list file hash, encoding, parser version, line and column, raw token and expected grammar production. Do not log credentials or unrestricted document content. Before replacing the whole property configuration for it, validate a copied file and preserve the exact failing location.
Operational case
A deployment tool rewrites the file in place while Indexing Service starts. Atomic replacement removes the observed short-read race. A regression test for it should assert the decisive evidence, change only the responsible condition, and include one neighboring HRESULT so future code cannot collapse distinct failures into a generic message.
Official Microsoft references
- Microsoft: legacy Indexing Service error messages
- Microsoft: OLE DB provider for Indexing Service
- Microsoft: Windows Search SQL syntax
- Microsoft: HRESULT values
Looking for a different code? Search another status or error code.
