Страница 61 из 111
ITypeLib::FindName Выполняет поиск описания типа в библиотеке. Можно использовать для быстрой проверки присутствия данного имени в библиотеке. HRESULT FindName ( OLECHAR FAR* szNameBuf, unsigned long IHashVal, ITypelnfo FAR* FAR* ppTInfo, MEMBERID FAR* rgMemld, unsigned int FAR* pcFound );
Параметры: szNameBuf Имя, по которому выполняется поиск. IHashVal Хэш-значение для ускорения поиска, вычисленное с помощью функции LHashValOfNameSys. Если параметр равен 0, то хэш-значение будет вычисляться автоматически. ppTInfo После возврата — массив указателей на описания типов, содержащих заданное имя. Не может быть NULL. rgMemld Массив MEMBERID для найденных элементов; rgMemId[i] — это MEMBERID, соответствующий описанию типа, которое задает ppTInfo[i]. He может быть NULL. pcFound На входе задает число экземпляров, которые нужно отыскать. Например, для поиска первого вхождения имени можно задать *pcFound = 1. После того, как найдено заданное число вхождений, поиск прекращается. На выходе указывает число найденных экземпляров. Если значение *pcFound на входе и выходе одинаково, то в библиотеке могут быть и другие описания, содержащие данное имя. Коды возврата: Из возвращенного HRESULT получают один из следующих кодов возврата: Код возврата | Значение | S_OK | Успех. | E_OUTOFMEMORY | He хватает памяти. | E_INVALIDARG | Один или несколько аргументов неверны. | TYPE_E_IOERROR | Функция не может выполнить запись в файл. | TYPE_E_INVDATAREAD | Функция не может читать из файла. | TYPE_E_UNSUPFORMAT | Библиотека типа имеет старый формат. | TYPE_E_INVALIDSTATE | He удается открыть библиотеку типа. | TYPE_E_CANTLOADLIBRARY | He удается загрузить файл библиотеки или .dll. | TYPE_E_ELEMENTNOTFOUND | Элемент не найден. | Комментарии: Задание *pcFound = n указывает, что в массивах ppTInfo и rgMemld достаточно места для n пар (ptinfo, memid). Если имя в szNameBuf — это имя информации о типе в ppTInfo[i], то в rgMemId[i] возвращается MEMBERID_NIL. |