You should only call `NtGetCurrentProcessorNumber()` once. Otherwise, the processor number can change if the thread is preempted and then re-scheduled to another processor. This leads to inconsistent values between the return value and the `process_number->Number` output.
It's not that `KeGetCurrentProcessorNumberEx()` will be highly useful, since the driver can't block scheduling by raising IRQL to DISPATCH_LEVEL. Still, it's better to at least return consistent values even if they are stale.