I have just written some software in C++ that is NUMA aware and am running it on an ESX guest with Windows 10.
At the start I call GetNumaHighestNodeNumber(…) and receive a 1, indicating that there should be 2 nodes, 0 and 1.
Later on I try to start two new processes, using CreateProcess, and include a PROC_THREAD_ATTRIBUTE_PREFERRED_NODE attribute.
The first process is started on node 0 and this call succeeds.
The second process is started on node 1 and this call fails with the error code ERROR_INVALID_PARAMETER.
Is it possible that the call to GetNumaHighestNodeNumber(…) is returning the hosts capability, ignoring the fact that the guest VM is limited to using only Numa-node 0 ?