| Previous | Next |
| STATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS | STATUS_FATAL_MEMORY_EXHAUSTION |
STATUS_NOT_SAME_OBJECT
Path equality is not object identity
STATUS_NOT_SAME_OBJECT indicates that an operation expected two objects to be identical but the comparison failed. For files, comparing path strings is not a reliable substitute for identity. Hard links can give one file multiple names, renames can change the path without changing the file, and identical relative paths on different volumes identify different objects.
Windows exposes FILE_ID_INFO to retrieve a volume serial number and a file identifier. OpenFileById likewise opens a file by an identifier relative to a volume handle. These APIs show why a useful diagnostic record needs both object ID and volume context. For NTFS, distributed link tracking also uses object identifiers to maintain identity across moves.
When this status appears, log both handles’ volume identity, file ID, resolved name, and the operation that required sameness. If the objects are kernel objects other than files, capture the native object types and the comparison inputs instead of forcing file semantics onto the status. Do not “fix” the error by normalizing case or path separators until stable identity has been checked.
What to inspect
- For files, capture FILE_ID_INFO for both handles.
- Compare volume identity as well as file ID.
- Preserve the native object type when the status comes from a non-file subsystem.
References
- Microsoft Open Specifications: NTSTATUS values
- Microsoft: FILE_ID_INFO
- Microsoft: OpenFileById
- Microsoft: Distributed link tracking and object identifiers
- Microsoft: File streams
Looking for a different code? Search another status or error code.