| Previous | Next |
| hrInvalidName | hrInvalidDatabaseId |
hrInvalidParameter
Why this is more specific than the message text
For hrInvalidParameter, for diagnosis, start with the database-engine contract rather than broad operating-system troubleshooting. The decisive boundary is the function received a value or combination that violates its call contract.
This result is the legacy Directory Service backup/restore HRESULT form of the ESE condition normally written as JET_errInvalidParameter. Preserve the original value 0xC80003EB when a wrapper also exposes a signed JET_ERR.
The key comparison is: hrInvalidBufferSize targets a buffer/column width mismatch; this result covers the wider parameter contract. The first useful observation is to capture the API name, all scalar arguments, structure sizes, grbits, and the engine version that interpreted them. This evidence separates malformed input from a valid name, path, or buffer that simply produced no result.
Related ESE boundaries
For this HRESULT, hrInvalidBufferSize targets a buffer/column width mismatch; this result covers the wider parameter contract. The following neighboring results belong to the same broad subsystem but mark different boundaries:
hrInvalidName | an ESE object name failed the naming contract before object lookup could succeed |
|---|---|
hrInvalidPath | a database, system, log, or temporary directory does not satisfy the path contract |
hrInvalidFilename | the filename component fails ESE rules even if the parent path exists |
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 boundary | the function received a value or combination that violates its call contract |
| First corrective direction | reduce the call to a documented minimal argument set and add options back one at a time |
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.
Data for a reproducible case
A useful trace should preserve the first failing operation and the state of the API argument, naming, path, and buffer contracts.
- Code-specific observation: capture the API name, all scalar arguments, structure sizes, grbits, and the engine version that interpreted them.
- the documented required-size value for any output buffer.
- the unmodified argument value with its Unicode and byte lengths.
- structure sizes, reserved fields, grbits, and API version.
Corrective workflow
- Freeze the failing request context and record
0xC80003EB, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: capture the API name, all scalar arguments, structure sizes, grbits, and the engine version that interpreted them.
- Apply the narrow correction: reduce the call to a documented minimal argument set and add options back one at a time.
- Before retrying the operation, reconcile the exact argument bytes and the absence of unintended object creation.
- Add a regression test that forces the old boundary and proves cleanup leaves no stale handles; then repeat the smallest read-only or disposable test that exercises the corrected precondition.
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.
Developer-facing acceptance test
Build a focused test that reproduces it at the API argument, naming, path, and buffer contracts layer. Record the precondition, execute one API call, and assert the HRESULT plus the resulting handle and transaction state. The corrected test should change only the decisive condition—the function received a value or combination that violates its call contract—and should prove that cleanup is safe if the call still fails.
Technical references
- ESE reference — used to verify the ESE object model, API ordering, or error family relevant to this HRESULT.
- Using ESE and esent.h
- JET_ERR enumeration
Looking for a different code? Search another status or error code.