Функция OleDoAutoConvert (ole2.h)
Автоматически преобразует объект в новый класс, если в реестре задано автоматическое преобразование для этого класса объектов.
Синтаксис
HRESULT OleDoAutoConvert(
[in] LPSTORAGE pStg,
[out] LPCLSID pClsidNew
);
Параметры
[in] pStg
Указатель на интерфейс IStorage в преобразуемом объекте хранилища.
[out] pClsidNew
Указатель на новый идентификатор CLSID для преобразуемого объекта. Если автоматическое преобразование не было, это может быть то же самое, что и исходный класс.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Преобразование не требуется или преобразование было успешно завершено. |
|
Функция не может считывать раздел из реестра. |
Эта функция также может возвращать любые значения ошибок, возвращаемые функцией OleGetAutoConvert . При доступе к объектам хранилища и потоковой передачи ознакомьтесь с методами IStorage::OpenStorage и IStorage::OpenStream , чтобы узнать о возможных ошибках. Если невозможно определить существующий идентификатор CLSID или если невозможно обновить объект хранилища с новыми сведениями, ознакомьтесь с интерфейсом IStream для получения других возвращаемых значений ошибок.
Комментарии
OleDoAutoConvert автоматически преобразует объект, если функция OleSetAutoConvert ранее была указана в реестре. Преобразование объекта означает, что объект постоянно связан с новым идентификатором CLSID. Автоматическое преобразование обычно определяется программой установки для новой версии объектного приложения, чтобы объекты, созданные в более старых версиях, можно было автоматически обновлять.
Объект хранилища должен находиться в выгруженном состоянии при вызове OleDoAutoConvert .
Контейнерное приложение, поддерживающее преобразование объектов, должно вызывать OleDoAutoConvert при каждой загрузке объекта. Если контейнер использует вспомогательную функцию OleLoad , ему не нужно вызывать OleDoAutoConvert явным образом, так как OleLoad вызывает ее внутренне.
OleDoAutoConvert сначала определяет, требуется ли какое-либо преобразование, вызывая функцию OleGetAutoConvert , которая, если преобразование не требуется, возвращает S_OK. Если объект требует преобразования, OleDoAutoConvert изменяет и преобразует объект хранилища путем активации нового приложения объекта. Новое приложение объекта считывает существующий формат данных, но сохраняет объект в новом собственном формате для объектного приложения.
Если автоматически преобразуемый объект является объектом OLE 1, строка ItemName хранится в потоке с именем "\1Ole10ItemName". Если этот поток не существует, имя элемента объекта равно NULL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ole2.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |