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


Реализация файла IEnumSTATPROPSETSTG-Compound

Реализация составного файла интерфейса IEnumSTATPROPSETSTG используется для перечисления массива структур STATPROPSETSTG , содержащих статистические данные свойств. Реализация IPropertySetStorage управляет статистическими данными и связана с текущим объектом хранилища составных файлов.

Назначение

Вызовите методы IEnumSTATPROPSETSTG для перечисления структур STATPROPSETSTG , каждая из которых предоставляет данные об одном из наборов свойств, связанных с составным объектом хранилища файлов.

Комментарии

IEnumSTATPROPSETSTG::Next

Возвращает следующую или несколько структур STATPROPSETSTG (число задается параметром celt ). Элементы STATPROPSETSTG , предоставляемые посредством вызова реализации составного файла IEnumSTATPROPSETSTG::Next , следуют следующим правилам:

  • Если IEnumSTATPROPSETSTG::Next не может предоставить STATPROPSETSTG.fmtid, в этот элемент записываются нули. Это происходит, если набор свойств не имеет предопределенного имени (например, \005SummaryInformation) и не является допустимым значением.
  • Набор свойств DocumentSummaryInformation и UserDefined является специальным, так как он может содержать два раздела набора свойств. Этот набор свойств описан в разделе Наборы свойств DocumentSummaryInformation и UserDefined. Второй раздел называется свойствами User-Defined. Каждый раздел идентифицируется с помощью уникального идентификатора формата (FMTID). Если для перечисления наборов свойств используется IPropertySetStorage::Enum , набор свойств User-Defined не перечисляется.

Примечание

Если набор свойств всегда создается с помощью IPropertySetStorage::Create, то, поскольку для имени хранилища создается идентификатор GUID символа, IEnumSTATPROPSETSTG::Next вернет ненулевое допустимое ЗНАЧЕНИЕ FMTID для набора свойств [STATPROPSETSTG.fmtid].

 

  • Элемент STATPROPSETSTG.grfFlags не обязательно отражает, имеет ли набор свойств значение ANSI. Если PROPSETFLAG_ANSI задано, то для свойства определенно задано значение ANSI. Если PROPSETFLAG_ANSI не задано, набор свойств может быть либо в Юникоде, либо в формате, отличном от Юникода, так как невозможно определить, является ли он ANSI, не открыв его.
  • Элемент STATPROPSETSTG.grfFlags отражает, является ли набор свойств простым или нет, поэтому параметр флага PROPSETFLAG_NONSIMPLE всегда действителен.
  • Если IEnumSTATPROPSETSTG::Next не может предоставить STATPROPSETSTG.clsid, ему присваивается значение всех нулей (CLSID_NULL). В реализации составного файла COM это происходит, когда набор свойств является простым (флаг PROPSETFLAG_NONSIMPLE не задан) или не является простым, но CLSID не задан явным образом. Для наборов неимпляемых свойств полученный идентификатор CLSID поддерживается базовым IStorage.
  • Если IEnumSTATPROPSETSTG::Next не может предоставить поля времени [ctime, mtime, atime], для каждого не поддерживаемого времени будут заданы нули. В реализации составного файла COM получение этих значений зависит от их получения из базовой реализации IStorage .

IEnumSTATPROPSETSTG::Skip

Пропускает количество элементов, указанных в celt. Возвращает S_OK, если указанное число элементов пропущено, возвращает S_FALSE, если пропущено меньше элементов, чем запрошено. В любом другом случае возвращает соответствующую ошибку.

IEnumSTATPROPSETSTG::Reset

Задает для курсора начало перечисления. В случае успешного выполнения возвращает S_OK, в противном случае — STG_E_INVALIDHANDLE.

IEnumSTATPROPSETSTG::Clone

Копирует текущее состояние перечисления этого перечислителя.