| Previous | Next |
| STATUS_NOT_IMPLEMENTED | STATUS_INFO_LENGTH_MISMATCH |
STATUS_INVALID_INFO_CLASS
Information classes select a structure and an operation contract
STATUS_INVALID_INFO_CLASS points at a selector such as FILE_INFORMATION_CLASS, FS_INFORMATION_CLASS, or another API-specific information-class enumeration. These values are not generic structure IDs. The class determines which operation is requested, which structure is expected in the buffer, and whether that class is legal for the target object and query/set direction.
The file-system helpers IoCheckQuerySetFileInformation and IoCheckQuerySetVolumeInformation explicitly validate the information class before an operation is sent farther into the stack. A numeric class can exist in a header yet still be invalid for a particular query, set operation, object type, or platform version. Likewise, ZwQueryVirtualMemory defines its output layout through MemoryInformationClass; the buffer format is inseparable from the selected class.
Diagnosis should therefore start with the symbolic class name and the API that consumed it. Logging only the NTSTATUS discards the most important evidence. Verify the header/SDK used to compile the caller, the runtime platform requirement for the class, and whether the operation is query or set. Do not fix this status by enlarging the buffer unless the same call also documents a length problem; an unsupported selector and a valid selector with an undersized record are different failures.
What to inspect
- Log the numeric and symbolic information-class value together with the exact Nt/Zw, Flt, or driver routine.
- Check that the class is allowed for the object type and for query versus set processing.
- After changing the class, also change the associated structure type and length; they are one contract.
References
- Microsoft: IoCheckQuerySetFileInformation
- Microsoft: IoCheckQuerySetVolumeInformation
- Microsoft: ZwQueryVirtualMemory
- Microsoft: Using NTSTATUS values
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.