Реализация файла IEnumSTATPROPSETSTG-Compound
Реализация составного файла интерфейса IEnumSTATPROPSETSTG используется для перечисления массива структур STATPROPSETSTG , содержащих статистические данные свойств. Реализация IPropertySetStorage управляет статистическими данными и связана с текущим объектом хранилища составных файлов.
Назначение
Вызовите методы IEnumSTATPROPSETSTG для перечисления структур STATPROPSETSTG , каждая из которых предоставляет данные об одном из наборов свойств, связанных с составным объектом хранилища файлов.
Комментарии
-
Возвращает следующую или несколько структур 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 .
-
Пропускает количество элементов, указанных в celt. Возвращает S_OK, если указанное число элементов пропущено, возвращает S_FALSE, если пропущено меньше элементов, чем запрошено. В любом другом случае возвращает соответствующую ошибку.
-
Задает для курсора начало перечисления. В случае успешного выполнения возвращает S_OK, в противном случае — STG_E_INVALIDHANDLE.
-
Копирует текущее состояние перечисления этого перечислителя.