Поделиться через


Функция OleDoAutoConvert (ole2.h)

Автоматически преобразует объект в новый класс, если в реестре задано автоматическое преобразование для этого класса объектов.

Синтаксис

HRESULT OleDoAutoConvert(
  [in]  LPSTORAGE pStg,
  [out] LPCLSID   pClsidNew
);

Параметры

[in] pStg

Указатель на интерфейс IStorage в преобразуемом объекте хранилища.

[out] pClsidNew

Указатель на новый идентификатор CLSID для преобразуемого объекта. Если автоматическое преобразование не было, это может быть то же самое, что и исходный класс.

Возвращаемое значение

Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.

Код возврата Описание
S_OK
Преобразование не требуется или преобразование было успешно завершено.
REGDB_E_KEYMISSING
Функция не может считывать раздел из реестра.
 

Эта функция также может возвращать любые значения ошибок, возвращаемые функцией 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

См. также раздел

OleGetAutoConvert

OleSetAutoConvert