Как стать автором
Обновить

Комментарии 2

Конечно, было бы прекрасно все время оставаться только в рамках парадигмы используемого языка программирования и чтобы «на фотографии не торчали уши фотографа», т.е. чтобы в исходных текстах никак не проявлялись бы особенности взаимодействия со средой. 

Увы, но не всегда возможно.

Во-первых, иногда с точки зрения эффективности выгоднее прямая работа с системными API.

В-вторых, не все возможности, предоставляемые системными API, могут быть реализованы в том или ином фреймфорке. Помнится, когда-то давно, когда еще под винду писал на билдере, коллега с пеной у рта доказывал что "вот так (не помню уже что там конкретно было) сделать нельзя потому что в VCL этого нет". Пришлось ткнуть носом что этого нет в VCL, но это очень просто реализуется на WinAPI.

Кроме того, в WinAPI достаточно много специфических интересных функций, которых нет даже в заголовочных файлах. Но они достаточно подробно описаны в MSDN и вполне используемы если описать прототип руками и зацепить ее динамически через GetProcAddress.

Что касается LoadLibrary, то это достаточно мощный инструмент. Разрабатывал как-то "Систему мониторинга инженерного оборудования зданий". И там была проблема - в систему подключается некое новое устройство. Причем, такое, которое на момент разработки не было известно. А работать с ним надо. Конфигурировать, интерпретировать сообщения от него, какие-то команды посылать. Короче - специфика всякая.

Останавливать систему чтобы установить новую версию нельзя - это связано с дикими расходами. Т.е. нужно как-то "на горячую" делать.

Придумали т.н. "драйвера устройств" - dll со стандартным интерфйсом где реализована вся специфика работы с устройством. Приходишь на объект, подключаешь устройство, в система делаешь "добавить", "новый тип устройства" и "вот на флешке его драйвер". Система копирует dll-ку к себе куда надо и прописывает ее в таблицу в описание нового типа устройства. И загружает ее динамически и с этого момента уже может работать с данным типом устройства.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории