Справочник по технологии COM
Страница 61. ITypeLib::FindName


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

 
Следующая статья »