Шаг 61 - 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_OUTOFMEMORYHe хватает памяти.
E_INVALIDARGОдин или несколько аргументов неверны.
TYPE_E_IOERRORФункция не может выполнить запись в файл.
TYPE_E_INVDATAREADФункция не может читать из файла.
TYPE_E_UNSUPFORMATБиблиотека типа имеет старый формат.
TYPE_E_INVALIDSTATEHe удается открыть библиотеку типа.
TYPE_E_CANTLOADLIBRARYHe удается загрузить файл библиотеки или .dll.
TYPE_E_ELEMENTNOTFOUNDЭлемент не найден.

Комментарии:
Задание *pcFound = n указывает, что в массивах ppTInfo и rgMemld достаточно места для n пар (ptinfo, memid). Если имя в szNameBuf — это имя информации о типе в ppTInfo[i], то в rgMemId[i] возвращается MEMBERID_NIL.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 13.03.2003