Подумайте о сотрудничестве с разработчиками вашего устройства и пользовательского интерфейса, чтобы абстрагировать эту реализацию от более подходящих компонентов.
Пользовательский интерфейс, который таким низкоуровневым образом напрямую взаимодействует с драйверами устройств, будет трудно поддерживать, тестировать и создавать (очевидно, что AddressOf уже не является проблемой; -).
Подумайте о реструктуризации как проекта / приложения пользовательского интерфейса (.NET), так и неуправляемой библиотеки, которую вы можете p / invoke или использовать COM, чтобы поговорить с ней, работает ли драйвер устройства ... или посмотрите, управляется ли .NET C ++ может помочь вам в этом.
Извините за то, что не ответил непосредственно на вопрос, но я утверждаю, что изменение архитектуры приложения может быть здесь более важным, чем технический ответ.