| Previous | Next |
| STATUS_TIMER_NOT_CANCELED | STATUS_NO_SUCH_DEVICE |
STATUS_INVALID_PARAMETER
The status is generic; the called routine defines the actual invalid condition
STATUS_INVALID_PARAMETER should not be diagnosed from its message text alone. It is a broad contract result used by many native and driver APIs, and each routine defines different invalid conditions. The useful question is not “which parameter is bad in Windows?” but “which documented precondition of this exact call was violated?”
For example, USBD_CreateHandle can return the status for null device or output pointers, an invalid USB client contract version, or a zero pool tag. NtQueryInformationByName documents it for an invalid FileInformationClass value. File-system control specifications also use the same status for invalid buffer length, handle type, field values, or unsupported version fields in a specific request. The identical NTSTATUS therefore represents very different defects at different call sites.
Capture the function name and every discriminator that changes parameter semantics: flags, information class, operation code, structure version, length, access mode, and object type. Validate them before converting the status to a Win32 error, because conversion loses call-site context. In driver code, prefer returning a more specific parameter-index status when the public contract uses one, but do not invent such a mapping after the fact.
What to inspect
- Read the return-value table for the exact DDI or protocol request that failed.
- Log flags and selector values symbolically as well as numerically; bit combinations often define the invalid case.
- Validate lengths before dereferencing variable records and validate object type before applying object-specific flags.
References
- Microsoft: USBD_CreateHandle
- Microsoft: NtQueryInformationByName
- Microsoft Open Specifications: file-system control code errata
- Microsoft: Using NTSTATUS values
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.
