Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.6. Операции с блоками и связями
А.5.6.4. rdsBlockOrConnByExtId – блок или связь по внешнему идентификатору
Функция rdsBlockOrConnByExtId ищет блок, связь или шину по уникальному целому идентификатору.
BOOL RDSCALL rdsBlockOrConnByExtId( RDS_BHANDLE Parent, // Родительская подсистема DWORD ExtId, // Целый идентификатор RDS_PFINDBYEXTIDDATA pData // Результаты поиска );
Тип указателя на эту функцию
RDS_BBhDwFbei
Параметры
- Parent (RDS_BHANDLE)
- Идентификатор подсистемы, начиная с которой нужно искать блок, связь или шину – поиск будет осуществляться в этой подсистеме и во всех ее внутренних подсистемах, независимо от уровня вложенности. Если нужно искать блок во всей загруженной схеме, в этом параметре можно передать NULL.
- ExtId (DWORD)
- Уникальный целый идентификатор блока, связи или шины.
- pData (RDS_PFINDBYEXTIDDATA)
- Указатель на структуру RDS_FINDBYEXTIDDATA, в которую функция запишет результат поиска. Если вызывающей программе нужно проверить, существует ли объект с идентификатором ExtId в схеме, но не требуется узнавать его внутренний идентификатор ( RDS_BHANDLE или RDS_CHANDLE), в этом параметре можно передать NULL.
Возвращаемое значение
TRUE, если блок, связь или шина с идентификатором ExtId найдены, FALSE в противном случае.
Примечания
Эта функция позволяет найти блок, связь или шину, зная его или ее уникальный целый внешний идентификатор ExtId. Параметр Parent позволяет ограничить поиск какой-либо подсистемой и ее внутренними блоками. По результатам поиска заполняется структура RDS_FINDBYEXTIDDATA: в поле Found заносится признак успешности поиска (это же значение возвращается функцией), в поле Block – внутренний идентификатор найденного блока, в поле Conn – внутренний идентификатор найденной шины или связи, в поле Type – тип найденного объекта. Только одно из полей Block и Conn будет заполнено (другое поле получит значение NULL), поскольку идентификаторы блоков и связей не пересекаются, и параметру функции ExtId будет соответствовать либо блок, либо связь или шина.
Целые идентификаторы блоков и связей используются, в основном, при включении RDS в состав других программ – в отличие от внутренних идентификаторов, они не изменяются при сохранении схемы и ее повторной загрузке. В моделях блоков и модулях автоматической компиляции чаще используются внутренние идентификаторы RDS_BHANDLE и RDS_CHANDLE, поскольку обращение к блокам и связям с их помощью выполняется гораздо быстрее. Для однозначной идентификации блока или связи в схеме можно использовать один из трех следующих способов, каждый из которых имеет свои достоинства и недостатки:
| Способ идентификации | Достоинства | Недостатки |
|---|---|---|
| Полное имя блока |
|
|
| Внутренние идентификаторы (RDS_BHANDLE и RDS_CHANDLE) |
|
|
| Внешние идентификаторы (DWORD) |
|
|
См. также
RDS_BLOCKDESCRIPTION, RDS_CONNDESCRIPTION, rdsUpdateExtIdsRange.