"нарыл когда то давно" - тогда-то давно про ХР ничего не знали. И что у неё внутри тоже неизвестно. Может и прямое обращение к портам, что косвенно подтверждает стабильная работа в 98-й. Выхода два: найти новую версию этой dll (или другую подобную под ХР) или, как советуют, закрывать порт после каждого цикла обмена и открывать снова, он от этого не сломается. :)