Можно ли получить данные из Ethernet платы непосредственно, минуя механизм API Windows (перехватить их..., обработчиком прерываний...)? Где почитать, как взаимодейсвует драйвер сетевухи с оськой? Кто-нить поделитесь ссылой! Пишу программу, критичную по времени. Посылаю через API send, принимаю recv - а данные начинают идти, когда заблагоразсудится диспетеру задач винды. Поэтому задержка получается неравномерной от 3 до 100ms. Я конечно понимаю, что винда - не ось реального времени, но все же хотелось бы как-нить, хотя бы частично, обойти этот момент.
Для начала попробуй отключить в винде все лишние службы и поднять себе приотитет. Возможно тебе и этого хватит.
ИМХО от того что вы минуете вызов апи и пошлете пакеты напрямую - измениться не много, но всеже - можно копнуть в сторону NDIS и TDI (ключи по гуглу). А еще ради интереса сравни скорость посылки через WinPCAP. Там будет побыстрее - я уверен. Здесь верный совет дал k3internal. Да и они есть в опенсурс (SunLinux если память не изменяет, является реалтайм ос), а париться и что-то изменять\патчить в ядре винды , неблагородное дело.
Не могу взять реалтаймовою ось - моя программа - это "плагин" к существующей для Windows. Поднятие приоритета пробовал - на пол-минуты дольше работает без глюков, а дальше то же самое. Вообще, если б можно было управлять диспетчером задач (ДЗ) (в смысле что бы я мог передавать управление задачам без него), то это бы мне оччень кардинально помогло.Другой вариант - как-то заставить ДЗ выделять задачам строго одинаковые временные интервалы - аппаратная привязка к времени у меня есть.
Прочитал про RTX, надстройка в Windows для переделки ее в риал-тайм. Щас пробую разобраться, может быть это то что мне надо.