Geoff Chappell, Software Analyst
The HvlQueryHypervisorProcessorNodeNumber function obtains the node number for a logical processor.
NTSTATUS HvlQueryHypervisorProcessorNodeNumber ( ULONG LpIndex, USHORT *NodeNumber);
The LpIndex argument specifies which logical processor to look up.
The NodeNumber argument provides the address of a variable that is to receive the node number.
The function returns STATUS_SUCCESS if successful, else a negative error code.
The HvlQueryHypervisorProcessorNodeNumber function is exported by name from the kernel in version 6.2 and higher.
The HvlQueryHypervisorProcessorNodeNumber function is not documented. It is, however, declared in the NTOSP.H from the Windows Driver Kit (WDK) for Windows 10.
The function depends on the CPU Management feature of the hypervisor. If this is not enabled, the function fails, returning STATUS_UNSUCCESSFUL.
The function also fails, again returning STATUS_UNSUCCESSFUL, if it cannot find the given logical processor index in the kernel’s array of logical processor control blocks. If only for now, this array provides for 0x0200 logical processors: the given index must be smaller.
Otherwise, the function copies the node number from the control block to the given address, and returns STATUS_SUCCESS.