enabled or disabled.
Here's some information we got from Shihjong Kuo,one of the authors of the article mentioned above:
You can deduce from other parts of the screen output when executing the utilty on a remote machine.
Specifically, the screen out contains a statement relating to the topology of each logical processor.
For example, on an Intel Core2 Duo processor, the portion may look like:
Relationships between OS affinity mask, Initial APIC ID, and 3-level sub-IDs:
AffinityMask = 1; Initial APIC = 0; Physical ID = 0, Core ID = 0, SMT ID = 0
AffinityMask = 2; Initial APIC = 1; Physical ID = 0, Core ID = 1, SMT ID = 0
If there are two logical processors with identical Physical ID and Core ID, but different SMT ID, that means Hyper-Threading is actually enabled by theOS and visible to the console process running the utility. In the example above, the Intel Core2 Duo processor does not support Hyper-Threading Technology and is consistent with the above interpretation.
Can you please elaborate on this !
Actually I wanted to find out the number of logical processors/cores for a remote windows machine, and you seem to suggest that one has to execute this utility on remote machine.
I was wondering whether there is no other cleaner mechanism than simply executing this utility on remote machine (the only option available to me for executing this utility on remote machine is taking a ssh session on windows machine and then executing this utility's exe, but the problem is many administrators would have a setting to block .exe execution in ssh for security reasons). Isn't there any way to execute these asm calls remotely ?? Or some other alternate way to get this information ??
The author responded that your questionappears to befundamentally about system administration and/or dealing with thefirewall protection policy of a remote PC running Windows*. The privilege of transporting a executable binary (from an SSH connection or other means) and executing a binary (from an SSH session, Microsoft terminal mts , or equivalent) is a basic requirement of running apps on a remote Windows machine.You willneed to work withyour system or network admin to acquire both of those privileges. Its not something our reference code can help with on these install/admin issues of remote connections.
Thanks for your prompt reply.
>>"Isn't there any way to execute these asm calls remotely ?? Or some other alternate way to get this information ??"
Sorry for asking this again, but is there no way we can execute these asm calls remotely ? I am basically looking for a cleaner way of getting this information remotely and I'm not very comfortable with executing this utility remotely.
If you can provide any heIp/suggestion in this regard then that would be very helpful.
Our engineeringcontact's understandingof the question is that itisessentially this: how can I execute the cpuid instruction (or any instruction, add, substract, whatever you can think of) on a remote machine and see the result of that remote machine?
The answer is:
- To execute any instruction in asm or any other language, you have to compile the instruction sequences into an executable.
- To run a program remotely, you have to install that program on the remote machine (either you have admin privileges or ask the network admin to grant you the necessary privileges), or
- You design your program to target an OS, using the networking protocols and OS services that provide the ability to execute a process on a remote machine.You have to figure out what OS/networking service can provide you the ability to deal with any firewall restrictions that may be set up by IT or the network administrators.
Our reference code deals with item 1; it is straightforward to use it on remote machineson whichyou have admin privileges. The general scope of item 3 -- deploying code across a network and firewalling policy --depends on the environment you want to target and is outside the scope of item 1.