| Previous | Next |
| hrContainerNotEmpty | hrInvalidBookmark |
hrInvalidFilename
Where the operation crossed the contract
hrInvalidFilename means the filename component fails ESE rules even if the parent path exists.
This is the legacy Directory Service backup/restore HRESULT form of JET_errInvalidFilename (0xC8000414).
The key comparison is: hrInvalidPath addresses the directory/location; hrFileNotFound accepts the syntax but cannot locate the file. The first useful observation is to capture the literal filename, extension, reserved characters, device-name collisions, and normalization. This evidence separates malformed input from a valid name, path, or buffer that simply produced no result.
Reconstruct the engine state
- Code-specific observation: capture the literal filename, extension, reserved characters, device-name collisions, and normalization.
- the unmodified argument value with its Unicode and byte lengths; associate it with this result rather than with a later generic exception.
- structure sizes, reserved fields, grbits, and API version.
- the documented required-size value for any output buffer.
The ESE objects in play
| Diagnostic layer | API argument, naming, path, and buffer contracts |
|---|---|
| Typical API surface | the specific Jet* function named by the caller and its structure definitions in esent.h |
| Code-specific condition | the filename component fails ESE rules even if the parent path exists |
| First corrective direction | generate a legal stable filename and avoid silent sanitization that could point to a different database |
Many output APIs expose a required byte count, while fixed-width inputs must match a declared type exactly. The original Unicode value and byte length matter when diagnosing names and paths.
Repair without destroying evidence
- Freeze the failing request context and record
0xC8000414, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: capture the literal filename, extension, reserved characters, device-name collisions, and normalization.
- Apply the targeted fix: generate a legal stable filename and avoid silent sanitization that could point to a different database.
- Before retrying the operation, reconcile the exact argument bytes and the absence of unintended object creation.
Do not collapse these codes together
hrInvalidBufferSize | the supplied byte count is incompatible with the selected column type or operation |
|---|---|
hrInvalidName | an ESE object name failed the naming contract before object lookup could succeed |
hrBufferTooSmall | a caller-provided output area cannot hold the value ESE is returning |
Actions that can hide or worsen the problem
- Do not silently trim, recode, or sanitize the value into a different identifier.
- Do not grow a fixed-width input buffer as though it were a variable output.
Technical references
Looking for a different code? Search another status or error code.
