Сеть из драйвера режима ядра - PullRequest
0 голосов
/ 13 августа 2010

Вопрос довольно понятен, мне требуется возможность открывать и управлять сокетом из драйвера режима ядра в Windows XP.Я знаю, что Vista и After обеспечивает эквивалент Winsock в режиме ядра, но для XP такой вещи нет.-режим службы, выполняющий работу сокетов, и один для использования TDI.Что лучше?

Ответы [ 2 ]

1 голос
/ 21 октября 2010

TDI не простой интерфейс для использования. Он предназначен для абстрагирования драйверов сетевого транспорта (TCP, NetBEUI, AppleTalk и т. Д.) От приложений. Вам нужно будет полностью понять API, чтобы иметь возможность использовать его для работы с сокетами - это, безусловно, гораздо больше, чем написание службы в пользовательском режиме и взаимодействие с ней. Вы можете выдать обратный IRP от службы к драйверу, чтобы драйвер мог запускать связь, когда это необходимо.

Кроме того, чем больше сложностей вы убираете из своего драйвера (здесь, в пользовательском режиме), тем лучше.

Однако для использования службы в режиме пользователя потребуется переключение контекста для каждой передачи данных в драйвер , что для вас может быть для каждого пакета. Это накладные расходы, которых лучше избегать.

Мне интересно, почему драйвер должен выполнять сетевой ввод-вывод. По крайней мере, это поверхностно, по-видимому, указывает на проблему дизайна.

1 голос
/ 13 августа 2010

Используйте интерфейс TDI, он доступен в XP и Vista.

http://msdn.microsoft.com/en-us/library/ff565112.aspx

...