Rsh API  SDK 2.1
Документация по программированию
 Указатель Классы Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы Страницы
Классы | Открытые типы | Открытые члены | Открытые статические члены | Полный список членов класса
Класс RshDllClient

Класс для работы с dll. Подробнее...

#include <RshDllClient.h>

Открытые типы

enum  LibraryType { libraryDriver = 0, libraryBase = 1, libraryDPA = 2 }
 Список типов библиотек. Подробнее...
 

Открытые члены

 RshDllClient ()
 
 ~RshDllClient ()
 
U32 Free ()
 Выгрузка всех библиотек. Подробнее...
 
U32 GetLibraryInterface (RshDllInterfaceKey &key, const std::string &interfaceName=std::string(""))
 Получение интерфейса библиотеки. Подробнее...
 
U32 GetDPALibraryInterface (RshDllInterfaceKey &key)
 Получение интерфейса библиотеки DPA. Подробнее...
 
U32 GetDeviceInterface (RshDllInterfaceKey &key)
 Получение интерфейса устройства (IRshDevice). Подробнее...
 

Открытые статические члены

static U32 GetRegisteredList (std::vector< std::string > &list, RshDllClient::LibraryType libType=libraryDriver)
 Получение списка зарегистрированных библиотек. Подробнее...
 

Подробное описание

Класс для работы с dll.

Данный класс упрощает работу с динамическими библиотеками. Используя данный класс, можно вызвав всего один метод получить готовый к работе объект с интерфейсом IRshDevice из библиотеки абстракции устройства.

Прим.
Можно обойтись и без использования данного класса - нужно экспортировать объект StaticFactory из dll, и вызвать метод IRshFactory::CreateInstance().
См. также
IRshFactory | IRshDevice
Примеры:
GSPF-052PCI_Generate.cpp, GSPF-053USB_Generate.cpp, LA-1.5PCI_Persistent.cpp, LA-1.5PCI_Port.cpp, LA-1.5PCI_StartStop.cpp, LA-20USB_Persistent.cpp, LA-20USB_Port.cpp, LA-20USB_StartStop.cpp, LA-2M5PCI_Persistent.cpp, LA-2M5PCI_Port.cpp, LA-2M5PCI_StartStop.cpp, LA-2USB_Persistent.cpp, LA-2USB_Port.cpp, LA-2USB_StartStop.cpp, LA-50USB_Persistent.cpp, LA-50USB_Port.cpp, LA-50USB_StartStop.cpp, LA-5Net_Persistent.cpp, LA-5Net_Port.cpp, LA-5Net_StartStop.cpp, LA-i24USB_Persistent.cpp, LA-i24USB_Port.cpp, LA-i24USB_StartStop.cpp, LA-n10-12PCI_StartStop.cpp, LA-n10-12USB_StartStop.cpp, LA-n10M8-100PCI_StartStop.cpp, LA-n10M8-500PCI_StartStop.cpp, LA-n150PCI_Persistent.cpp, LA-n150PCI_Port.cpp, LA-n150PCI_StartStop.cpp, LA-n1USB_StartStop.cpp, LA-n20-12PCI_Port.cpp, LA-n20-12PCI_StartStop.cpp, LA-n2USB_StartStop.cpp, LA48DPCI_Port.cpp, Leonardo2_Persistent.cpp, Leonardo2_Port.cpp, Leonardo2_StartStop.cpp, Python_Continuous.cpp, Python_Port.cpp, Python_StartStop.cpp и Sirius_StartStop.cpp.

Перечисления

Список типов библиотек.

Типы из этого списка используются в методе GetRegisteredList() и определяют ветку реестра, в которй будет производиться поиск зарегистрированных библиотек.

Элементы перечислений
libraryDriver 

Драйверы (библиотеки абстракции) устройств

libraryBase 

Базовые библиотеки

libraryDPA 

Библиотеки алгоритмов DPA.

Конструктор(ы)

RshDllClient::RshDllClient ( )
RshDllClient::~RshDllClient ( )

Перекрестные ссылки Free().

Граф вызовов:

Методы

U32 RshDllClient::Free ( )

Выгрузка всех библиотек.

Возвращает
RSH_API_SUCCESS или код ошибки.

Используя данный метод, можно выгрузить все библиотеки, которые были загружены с помощью класса RshDllClient.

Прим.
Вызов данного метода целесообразно производить в тот момент, когда библиотека для работы с устройством (или несколько библиотек) уже не нужны - например, в деструкторе основного класса, или при выходе из приложения.
Вызов данного метода гарантирует, что все библиотеки (в том числе базовые, загружаемые скрытно от пользователя) будут корректо выгружены из памяти.
Примеры:
GSPF-052PCI_Generate.cpp, GSPF-053USB_Generate.cpp, LA-1.5PCI_Persistent.cpp, LA-1.5PCI_Port.cpp, LA-1.5PCI_StartStop.cpp, LA-20USB_Persistent.cpp, LA-20USB_Port.cpp, LA-20USB_StartStop.cpp, LA-2M5PCI_Persistent.cpp, LA-2M5PCI_Port.cpp, LA-2M5PCI_StartStop.cpp, LA-2USB_Persistent.cpp, LA-2USB_Port.cpp, LA-2USB_StartStop.cpp, LA-50USB_Persistent.cpp, LA-50USB_Port.cpp, LA-50USB_StartStop.cpp, LA-5Net_Persistent.cpp, LA-5Net_Port.cpp, LA-5Net_StartStop.cpp, LA-i24USB_Persistent.cpp, LA-i24USB_Port.cpp, LA-i24USB_StartStop.cpp, LA-n10-12PCI_StartStop.cpp, LA-n10-12USB_StartStop.cpp, LA-n10M8-100PCI_StartStop.cpp, LA-n10M8-500PCI_StartStop.cpp, LA-n150PCI_Persistent.cpp, LA-n150PCI_Port.cpp, LA-n150PCI_StartStop.cpp, LA-n1USB_StartStop.cpp, LA-n20-12PCI_Port.cpp, LA-n20-12PCI_StartStop.cpp, LA-n2USB_StartStop.cpp, LA48DPCI_Port.cpp, Leonardo2_Persistent.cpp, Leonardo2_Port.cpp, Leonardo2_StartStop.cpp, Python_Continuous.cpp, Python_Port.cpp, Python_StartStop.cpp и Sirius_StartStop.cpp.

Перекрестные ссылки RSH_API_SUCCESS.

Используется в ~RshDllClient().

Граф вызова функции:

U32 RshDllClient::GetDeviceInterface ( RshDllInterfaceKey key)

Получение интерфейса устройства (IRshDevice).

Аргументы
[in,out]keyОбъект класса RshDllInterfaceKey, который содержит имя нужной библиотеки и указатель на объект IRshDevice. После успешного вызова метода, переданный указатель будет ссылаться на инстанцированный объект, который можно использовать для управления устройством.
Возвращает
RSH_API_SUCCESS или код ошибки.

Данный метод используется для инстанцирования объектов с интерфейсом устройства (IRshDevice) из динамических библиотек, зарегистрированных в реестре Windows в ветке Drivers.

Прим.
Инстанцировать объект IRshDevice можно без использвания данного метода - для этого нужно эскпортировать статический объект фабрики (IRshFactory) с именем StaticFactory из dll, а затем вызвать у экспортированной фабрики метод IRshFactory::CreateInstance().
См. также
RshDllInterfaceKey | IRshFactory
Примеры:
GSPF-052PCI_Generate.cpp, GSPF-053USB_Generate.cpp, LA-1.5PCI_Persistent.cpp, LA-1.5PCI_Port.cpp, LA-1.5PCI_StartStop.cpp, LA-20USB_Persistent.cpp, LA-20USB_Port.cpp, LA-20USB_StartStop.cpp, LA-2M5PCI_Persistent.cpp, LA-2M5PCI_Port.cpp, LA-2M5PCI_StartStop.cpp, LA-2USB_Persistent.cpp, LA-2USB_Port.cpp, LA-2USB_StartStop.cpp, LA-50USB_Persistent.cpp, LA-50USB_Port.cpp, LA-50USB_StartStop.cpp, LA-5Net_Persistent.cpp, LA-5Net_Port.cpp, LA-5Net_StartStop.cpp, LA-i24USB_Persistent.cpp, LA-i24USB_Port.cpp, LA-i24USB_StartStop.cpp, LA-n10-12PCI_StartStop.cpp, LA-n10-12USB_StartStop.cpp, LA-n10M8-100PCI_StartStop.cpp, LA-n10M8-500PCI_StartStop.cpp, LA-n150PCI_Persistent.cpp, LA-n150PCI_Port.cpp, LA-n150PCI_StartStop.cpp, LA-n1USB_StartStop.cpp, LA-n20-12PCI_Port.cpp, LA-n20-12PCI_StartStop.cpp, LA-n2USB_StartStop.cpp, LA48DPCI_Port.cpp, Leonardo2_Persistent.cpp, Leonardo2_Port.cpp, Leonardo2_StartStop.cpp, Python_Continuous.cpp, Python_Port.cpp, Python_StartStop.cpp и Sirius_StartStop.cpp.
U32 RshDllClient::GetDPALibraryInterface ( RshDllInterfaceKey key)

Получение интерфейса библиотеки DPA.

Аргументы
[in,out]keyОбъект класса RshDllInterfaceKey, который содержит имя нужной библиотеки и указатель на объект класса библиотеки. После успешного вызова метода, переданный указатель будет ссылаться на инстанцированный объект.
Возвращает
RSH_API_SUCCESS или код ошибки.

Данный метод используется для инстанцирования классов с интерфейсом IDPA (Data processing algorithms) из динамических библиотек, зарегистрированных в ветке Base library\DPA реестра Windows.
Данный метод является аналогом метода GetLibraryInterface(), отличие - ветка в реестре, в которой выполняется поиск, а также то, что интерфейс жестко задан (IDPA).

См. также
RshDllInterfaceKey | IDPA
U32 RshDllClient::GetLibraryInterface ( RshDllInterfaceKey key,
const std::string &  interfaceName = std::string("") 
)

Получение интерфейса библиотеки.

Аргументы
[in,out]keyОбъект класса RshDllInterfaceKey, который содержит имя нужной библиотеки и указатель на объект класса библиотеки. После успешного вызова метода, переданный указатель будет ссылаться на инстанцированный объект.
[in]interfaceNameИмя интерфейса библиотеки. В большинстве случаев, этот параметр можно не указывать, т.к. обычно загружаемые библиотеки имеют имя интерфейса, соответствующее имени самой библиотеки: например, PLX9054 (имя в реестре) и IPLX9054 (название интерфейса).
Возвращает
RSH_API_SUCCESS или код ошибки.

Данный метод используется для инстанцирования классов из динамических библиотек, зарегистрированных в ветке Base library реестра Windows.

См. также
RshDllInterfaceKey
U32 RshDllClient::GetRegisteredList ( std::vector< std::string > &  list,
RshDllClient::LibraryType  libType = libraryDriver 
)
static

Получение списка зарегистрированных библиотек.

Аргументы
[in,out]listСписок (std::vector<std::string>) который будет заполнен. Переданный в метод список будет очищен перед заполнением. После успешного завершения работы метода в нем будет содержаться список всех зарегистрированных в системе библиотек заданного типа.
[in]libTypeТип библиотеки. Одна из констант перечисления RshDllClient::LibraryType.
Возвращает
RSH_API_SUCCESS или код ошибки.

Данный метод используется для получения списка зарегистрированных библиотек из реестра Windows. Полученные имена библиотек могут быть использованы для инстанцирования объектов с помощью метода GetDeviceInterface() и других подобных.

См. также
RshDllInterfaceKey | Пример использования
Примеры:
GSPF-052PCI_Generate.cpp, GSPF-053USB_Generate.cpp, LA-1.5PCI_Persistent.cpp, LA-1.5PCI_Port.cpp, LA-1.5PCI_StartStop.cpp, LA-20USB_Persistent.cpp, LA-20USB_Port.cpp, LA-20USB_StartStop.cpp, LA-2M5PCI_Persistent.cpp, LA-2M5PCI_Port.cpp, LA-2M5PCI_StartStop.cpp, LA-2USB_Persistent.cpp, LA-2USB_Port.cpp, LA-2USB_StartStop.cpp, LA-50USB_Persistent.cpp, LA-50USB_Port.cpp, LA-50USB_StartStop.cpp, LA-5Net_Persistent.cpp, LA-5Net_Port.cpp, LA-5Net_StartStop.cpp, LA-i24USB_Persistent.cpp, LA-i24USB_Port.cpp, LA-i24USB_StartStop.cpp, LA-n10-12PCI_StartStop.cpp, LA-n10-12USB_StartStop.cpp, LA-n10M8-100PCI_StartStop.cpp, LA-n10M8-500PCI_StartStop.cpp, LA-n150PCI_Persistent.cpp, LA-n150PCI_Port.cpp, LA-n150PCI_StartStop.cpp, LA-n1USB_StartStop.cpp, LA-n20-12PCI_Port.cpp, LA-n20-12PCI_StartStop.cpp, LA-n2USB_StartStop.cpp, LA48DPCI_Port.cpp, Leonardo2_Persistent.cpp, Leonardo2_Port.cpp, Leonardo2_StartStop.cpp, Python_StartStop.cpp, RshDllClient_GetRegisteredList_RU.cpp и Sirius_StartStop.cpp.

Перекрестные ссылки libraryBase, libraryDPA, libraryDriver, RSH_API_REGISTRY_KEYCANTOPEN и RSH_API_SUCCESS.


Объявления и описания членов классов находятся в файлах: