В dll-ке была переменная "тип устройства". Она принимала одно из значений, описанных #define'ами (да, анахронизм, но привычно). В основной программе эта переменная получалась и иногда анализировалась через switch. Фактически применялись 1-2 типа устройства. Тут понадобилось включить третий, давно забытый тип. И всё работать перестало.
ОКАЗАЛОСЬ, что список констант в длл-ке и в основной программе имеют разную нумерацию. А раньше всё работало, потому что номера используемых устройств случайно (!) совпадали с теми константами switch, которые делают нужные действия.