Исключение System.Net.Sockets в IOControl
На Windows 7 (.Net 4.6.1) я получаю исключение с этим кодом:
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.IOControl(-1744830448, new byte[4] { 1, 0, 0, 0 }, null);
Попытка выполнить операцию не поддерживается для типа объекта, на который ссылается System.Net.Sockets.Socket.IOControl(Int32 ioControlCode, Byte[] optionInValue, Byte[] optionOutValue)
Это прекрасно работает с Windows 8 на моей виртуальной машине.
1 ответ
Использование SIO_LOOPBACK_FAST_PATH = -1744830448 с методом IOControl не поддерживается Windows 7, поэтому возникнет исключение.
Из документации MSDN для SIO_LOOPBACK_FAST_PATH:
Попытка операции не поддерживается для типа объекта, на который ссылаются. Эта ошибка возвращается, если указанная команда IOCTL не поддерживается. Эта ошибка возвращается, если SIO_LOOPBACK_FAST_PATH IOCTL используется в Windows 7, Windows Server 2008 R2 и более ранних версиях.
Эта ошибка также возвращается, если IOCTL SIO_LOOPBACK_FAST_PATH не поддерживается поставщиком транспорта.