| Previous | Next |
| STATUS_ERROR_PROCESS_NOT_IN_JOB | STATUS_NETWORK_OPEN_RESTRICTION |
STATUS_CPU_SET_INVALID
CPU Set IDs are opaque system identifiers, not processor numbers
STATUS_CPU_SET_INVALID concerns the Windows CPU Sets scheduling interface. A CPU Set is described by SYSTEM_CPU_SET_INFORMATION and has an Id that can be supplied to CPU-set APIs. The ID should be obtained from the system's current CPU-set enumeration; it must not be synthesized from a logical processor number, group number or array index.
CPU topology and availability can also matter. The enumeration exposes fields such as group, logical processor index and flags indicating allocation, parking or other state. Code that caches IDs indefinitely or transfers IDs from another machine can submit identifiers that are meaningless in the current topology.
What to verify
- Enumerate CPU Sets on the same system and boot context in which the request is made.
- Pass the documented CPU Set
Idvalues, notLogicalProcessorIndexor a processor-group-relative index. - Check count, buffer lifetime and element width when constructing the array passed to
SetProcessDefaultCpuSets. - Re-enumerate after topology or virtualization changes instead of assuming cached identifiers remain valid.
This status is therefore different from a generic processor-affinity failure. CPU Sets are an advisory scheduling control with their own namespace and APIs; debug the submitted IDs against the current enumeration before changing process affinity masks.
References
- Microsoft: CPU Sets
- Microsoft: SYSTEM_CPU_SET_INFORMATION
- Microsoft: SetProcessDefaultCpuSets
- Microsoft: Processor Groups
- Microsoft Open Specifications: NTSTATUS values
Looking for a different code? Search another status or error code.