Принудительная установка full duplex для NIC под Windows

Внезапно появилась необходимость установить принудительно 100baseTX-FD под windows 2008 r2 и я столкнулся c, как мне казалось, непреодолимой задачей. К сожалению, для винды нет таких утилит как ethtool или mii-tool, а также почему-то не оказалось никакой «продвинутой» закладки в конфигурации устройства, видимо это зависит от драйвера, а на сервере intel 82574L. После часа поиска по гуглу наконец-то наткнулся на полезный результат, где описывается каким образом и где в реестре можно изменить значения: http://www.brianclifton.com/blogs/programming/windows-nic-info:

If you need to programmatically get info about the NIC, you can find it in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

You can enumerate through all of the sub-keys; they’re labeled as 0000, 0001, 0002, etc. If you’re on Windows Vista / Server 2008, be sure to catch exceptions because there is a sub-key called Properties that you will get an access violation on.

For example, in my Shuttle SG33G5, I have my primary NIC under a sub-key called 0004. I can tell it’s my primary NIC because of the DriverDesc value. From this key, you can set duplex, buffer sizes, and other NIC driver settings.

Just as an example, lets say you want to set your NIC to be 100Mbps full duplex. Before you make an automated solution, you can see the values passed to the NIC driver in the sub-key called NDI under the sub-key Params. In my case, I would need to open this key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0004\Ndi\Params\*SpeedDuplex

There is a value here called default and it’s set to 0. Looking at the sub-key called enum, there are some values I could use:
0 = Auto Negotiation
1 = 10 Mbps Half Duplex
2 = 10 Mbps Full Duplex
3 = 100 Mbps Half Duplex
4 = 100 Mbps Full Duplex

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

captcha *