23h2 build 22631.3155 the affinity set in random cores when i want to set to last core what im doing wrong here? its works in windows 10
NTSTATUS
SetAffinityAndCreateThread(VOID)
{
OBJECT_ATTRIBUTES ObjectAttributes;
InitializeObjectAttributes(&ObjectAttributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);
HANDLE Handle;
NTSTATUS Status =
PsCreateSystemThread(&Handle, THREAD_ALL_ACCESS, &ObjectAttributes, NULL, NULL, CallerThread, NULL);
if (NT_SUCCESS(Status))
{
const ULONG numberOfProcessors = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
PROCESSOR_NUMBER processorNumber, processorNumber2;
Status = KeGetProcessorNumberFromIndex(numberOfProcessors - 1, &processorNumber);
if (!NT_SUCCESS(Status))
{
return -1;
}
processorNumber2.Group = processorNumber.Group;
processorNumber2.Number = processorNumber.Number;
processorNumber2.Reserved = processorNumber.Reserved;
Status = ZwSetInformationThread(Handle, ThreadIdealProcessorEx, &processorNumber2, sizeof(processorNumber2));
if (!NT_SUCCESS(Status)) {
ZwClose(Handle);
return STATUS_UNSUCCESSFUL;
}
KAFFINITY Affinity = (KAFFINITY)(1ull << processorNumber.Number);
Status = ZwSetInformationThread(Handle, ThreadAffinityMask, &Affinity, sizeof(Affinity));
if (!NT_SUCCESS(Status)) {
ZwClose(Handle);
return STATUS_UNSUCCESSFUL;
}
}
ObReferenceObjectByHandle(Handle, THREAD_ALL_ACCESS, NULL, KernelMode, (PVOID*)&Cleanup.Thread, NULL);
ZwClose(Handle);
return STATUS_SUCCESS;
}