Win 11 affinity mask set in random cores

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;
}

using NtSetInformationThread works ! in win 11 thanks return to core correctly over Zw