Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Возвращает идентификатор CLSID, связанный с указанным именем файла.
Синтаксис
HRESULT GetClassFile(
[in] LPCOLESTR szFilename,
[out] CLSID *pclsid
);
Параметры
[in] szFilename
Указатель на имя файла, для которого запрашивается связанный идентификатор CLSID.
[out] pclsid
Указатель на расположение, в котором при возврате записывается связанный идентификатор CLSID.
Возвращаемое значение
Эта функция может возвращать любые ошибки файловой системы, а также следующие значения.
| Код возврата | Описание |
|---|---|
|
Идентификатор CLSID успешно получен. |
|
Не удается открыть указанное имя файла. |
|
Указанное расширение в реестре является недопустимым. |
Комментарии
При указании имени файла GetClassFile находит идентификатор CLSID, связанный с этим файлом. Примеры его использования приведены в функции OleCreateFromFile , которая передает имя файла и требует связанного идентификатора CLSID, а также в реализации OLE IMoniker::BindToObject, которая при активации ссылки на файловый документ вызывает GetClassFile для поиска приложения-объекта, которое может открыть файл.
GetClassFile использует следующие стратегии для определения соответствующего идентификатора CLSID:
- Если файл содержит объект хранилища, как определено вызовом функции StgIsStorageFile , GetClassFile возвращает идентификатор CLSID, записанный с помощью метода IStorage::SetClass .
-
Если файл не является объектом хранилища, GetClassFile пытается сопоставить различные биты в файле с шаблоном в реестре. Шаблон в реестре может содержать ряд записей формы:
entry = offset, cb, mask, value
Значение элемента смещения представляет собой смещение от начала или конца файла, а элемент cb — длину в байтах. Эти два значения представляют определенный диапазон байтов в файле. (Отрицательное значение для элемента смещения интерпретируется из конца файла.) Значение маски — это битовая маска, используемая для выполнения логической операции AND с диапазоном байтов, заданным смещением и cb. Результат логической операции AND сравнивается с элементом значения . Если маска опущена, предполагается, что это все маски.
Каждый шаблон в реестре сравнивается с файлом в порядке шаблонов в базе данных. Первый шаблон, в котором каждый из элементов значений соответствует результату операции AND, определяет CLSID файла. Например, шаблон, содержащийся в следующих записях реестра, требует, чтобы первые четыре байта были AB CD 12 34, а последние четыре байта — FE FE FE FE:
HKEY_CLASSES_ROOT FileType {12345678-0000-0001-C000-000000000095} 0 = 0, 4, FFFFFFFF, ABCD1234 1 = -4, 4, , FEFEFEFEЕсли файл содержит такой шаблон, идентификатор CLSID {12345678-0000-0001-C000-0000000000095} будет связан с этим файлом.
- Если описанные выше стратегии завершаются ошибкой, GetClassFile ищет в реестре раздел расширения файла , соответствующий ext-части имени файла. Если запись базы данных содержит допустимый ИДЕНТИФИКАТОР CLSID, GetClassFile возвращает этот идентификатор CLSID.
- Если все стратегии завершаются сбоем, функция возвращает MK_E_INVALIDEXTENSION.
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
| Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
| Целевая платформа | Windows |
| Header | objbase.h |
| Библиотека | Ole32.lib |
| DLL | Ole32.dll |
| Набор API | ext-ms-win-com-ole32-l1-1-5 (появилось в Windows 10 версии 10.0.15063) |