RU2348069C2 - Mechanism of modification application to files consisting of multiple parts - Google Patents
Mechanism of modification application to files consisting of multiple parts Download PDFInfo
- Publication number
- RU2348069C2 RU2348069C2 RU2004119948/09A RU2004119948A RU2348069C2 RU 2348069 C2 RU2348069 C2 RU 2348069C2 RU 2004119948/09 A RU2004119948/09 A RU 2004119948/09A RU 2004119948 A RU2004119948 A RU 2004119948A RU 2348069 C2 RU2348069 C2 RU 2348069C2
- Authority
- RU
- Russia
- Prior art keywords
- data
- stream
- list
- transform
- computer
- Prior art date
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
Description
Данная заявка подается как заявка РСТ, поданная 17 мая 2003 г. корпорацией Майкрософт, созданной и находящейся в США, с указанием всех стран, кроме США.This application is filed as a PCT application, filed May 17, 2003 by Microsoft, created and located in the United States, listing all countries except the United States.
Предпосылки изобретенияBACKGROUND OF THE INVENTION
Современные компьютерные системы обычно хранят большой объем данных в нескольких файлах. Формат файлов может быть одним из нескольких разных форматов, совместимых с различными приложениями, например текстовыми редакторами, электронными таблицами и т.п. Часто бывает необходимо передать файл на другой компьютер, чтобы другой пользователь мог видеть данные в файле или манипулировать ими. Иногда, когда файл слишком велик, до отправки файла на другой компьютер над файлом осуществляется преобразование (например, сжатие). Благодаря сжатию файла для отправки файла на другой компьютер требуется меньшая пропускная способность. В других случаях, для защиты данных от доступа со стороны неавторизованных пользователей, можно осуществлять другое преобразование (например, шифрование).Modern computer systems typically store a large amount of data in multiple files. The file format can be one of several different formats compatible with various applications, for example, text editors, spreadsheets, etc. It is often necessary to transfer a file to another computer so that another user can see or manipulate the data in the file. Sometimes, when the file is too large, the file is converted (for example, compression) before the file is sent to another computer. Thanks to file compression, less bandwidth is required to send the file to another computer. In other cases, to protect data from access by unauthorized users, you can perform another conversion (for example, encryption).
Некоторые из этих преобразований имеют особые методы кодирования и используют отдельный файл (например, словарь) для хранения информации о конкретном методе кодирования. Этот отдельный файл должен использоваться при доступе к преобразованному файлу. В случае повреждения, потери или недоступности этого отдельного файла, преобразованный файл оказывается бесполезным. Кроме того, поскольку некоторые из этих преобразований задают свои собственные методы кодирования для перемежения кодированных данных и информации обработки, файл, подвергнутый преобразованию, не подлежит совместному использованию или общей обработке. Кроме того, до преобразования файла современные преобразования требуют, чтобы данные в файле были организованы в виде последовательных байтов. Гарантия того, что байты в файле остаются последовательными, требует больших накладных расходов и нежизнеспособно для часто редактируемых файлов. Таким образом, хотя эти преобразования весьма полезны, способ их реализации не дает пользователям большой свободы действий.Some of these transformations have special encoding methods and use a separate file (for example, a dictionary) to store information about a particular encoding method. This separate file should be used when accessing the converted file. In case of damage, loss or inaccessibility of this separate file, the converted file is useless. In addition, since some of these transformations define their own encoding methods for interleaving the encoded data and the processing information, the converted file is not to be shared or shared processed. In addition, prior to file conversion, modern conversions require that the data in the file be organized in sequential bytes. Ensuring that bytes in a file remain consistent requires a lot of overhead and is not viable for frequently edited files. Thus, although these transformations are very useful, the way they are implemented does not give users much freedom of action.
Сущность изобретенияSUMMARY OF THE INVENTION
Настоящее изобретение относится к системе и способу реализации преобразований, обеспечивающих пользователям повышенную гибкость. В целом, настоящее изобретение обеспечивает механизм сохранения информации преобразования, связанной с одним или несколькими преобразованиями в файле, состоящем из множественных частей. Файл, состоящий из множественных частей, также содержит данные, к которым применяются одно или несколько преобразований. Таким образом, настоящее изобретение обеспечивает формат файла для файла, состоящего из множественных частей, что позволяет приложениям, обращающимся к файлу, легко осуществлять доступ к преобразованным данным. Согласно изобретению, множественные преобразования данных могут образовывать цепь. Эти преобразования данных, составляющие цепь, именуются «пространствами данных». Каждое пространство данных имеет уникальный порядок и тип для преобразований, образующих цепь. Например, два пространства данных могут задавать одни и те же преобразования, но разный порядок применения преобразований. Информация преобразования содержит информацию о пространствах данных.The present invention relates to a system and method for implementing transformations that provide users with increased flexibility. In general, the present invention provides a mechanism for storing transformation information associated with one or more transformations in a file consisting of multiple parts. A file consisting of multiple parts also contains data to which one or more transformations are applied. Thus, the present invention provides a file format for a file consisting of multiple parts, which allows applications accessing the file to easily access the converted data. According to the invention, multiple data transformations can form a chain. These data transformations that make up the circuit are called “data spaces.” Each data space has a unique order and type for the transformations that make up the chain. For example, two data spaces can specify the same transformations, but the order in which transformations are applied is different. Transformation information contains information about data spaces.
Согласно другому аспекту изобретения, файл, состоящий из множественных частей, содержит множество потоков. Каждый поток может быть связан с одним из пространств данных. Таким образом, согласно настоящему изобретению, некоторые потоки в файле, состоящем из множественных частей, могут преобразовываться, тогда как другие потоки могут оставаться в своем естественном формате. Эта способность преобразовывать конкретные потоки без необходимости преобразования всего файла, состоящего из множественных частей, обеспечивает пользователям большую гибкость, например позволяет пользователям шифровать только значимую информацию в файле, состоящем из множественных частей (например, при редактировании документов).According to another aspect of the invention, a multi-part file contains multiple streams. Each stream can be associated with one of the data spaces. Thus, according to the present invention, some streams in a file consisting of multiple parts can be converted, while other streams can remain in their natural format. This ability to convert specific streams without having to convert the entire file consisting of multiple parts provides users with greater flexibility, for example, allows users to encrypt only relevant information in a file consisting of multiple parts (for example, when editing documents).
Таким образом, настоящее изобретение относится к системе и способу применения преобразований к файлам, состоящим из множественных частей. Поступает запрос на доступ к потоку данных в файле, состоящем из множественных частей. По получении запроса идентифицируется список преобразований, связанных с потоком. Список также включается в состав файла, состоящего из множественных частей. Преобразования, указанные в списке преобразований, осуществляются над данными до завершения запроса. Если это запрос на запись, то преобразования кодируют данные. Если это запрос на чтение, то преобразования декодируют данные. Список преобразований зависит от порядка. Список преобразований содержит структуру данных, имеющую первый поток, который включает в себя отображение (соответствие), сопоставляющее поток с именем списка преобразования. Второй поток, перечисляющий все преобразования для потока. Третий поток для каждого из перечисленных преобразований, который идентифицирует информацию, связанную с преобразованием.Thus, the present invention relates to a system and method for applying transformations to files consisting of multiple parts. A request is received to access the data stream in a file consisting of multiple parts. Upon receipt of the request, a list of transformations associated with the stream is identified. The list is also included in the file, consisting of multiple parts. The transformations specified in the list of transformations are performed on the data until the request is completed. If this is a write request, then the transforms encode the data. If it is a read request, then the transforms decode the data. The list of transformations depends on the order. The transformation list contains a data structure having a first stream, which includes a mapping (correspondence) matching the stream with the name of the transformation list. The second thread listing all the conversions for the thread. The third stream for each of these transformations that identifies the information associated with the transform.
Краткое описание чертежейBrief Description of the Drawings
Фиг.1 - функциональная блок-схема вычислительного устройства, которое можно использовать в реализациях настоящего изобретения.Figure 1 is a functional block diagram of a computing device that can be used in implementations of the present invention.
Фиг.2 - функциональная блок-схема, иллюстрирующая в общих чертах процесс преобразования согласно настоящему изобретению.Figure 2 is a functional block diagram illustrating in general terms a conversion process according to the present invention.
Фиг.3 - графическое представление древовидной иерархии, которая представляет метаданные преобразования, показанные на фиг.2.FIG. 3 is a graphical representation of a tree hierarchy that represents the transformation metadata shown in FIG.
Фиг.4 - схема процесса преобразования.4 is a diagram of a conversion process.
Фиг.5 - логическая последовательность операций, иллюстрирующая в общих чертах процесс доступа к преобразованным данным в файле, состоящем из множественных частей, согласно одному варианту осуществления изобретения.5 is a flowchart illustrating a general process for accessing converted data in a file consisting of multiple parts, according to one embodiment of the invention.
Подробное описание предпочтительного варианта осуществленияDetailed Description of a Preferred Embodiment
Изобретение обеспечивает механизм применения преобразований к файлам, состоящим из множественных частей. Механизм предусматривает структуру для задания информации преобразования. Информация преобразования и преобразованные данные сосуществуют в одном и том же документе. Механизм, предусмотренный изобретением, предпочтительно базируется на формате файла, состоящего из множественных частей, который допускает наличие множественных типов потоков в одном документе. Изобретатели определили, что формат составного файла по стандарту связывания и встраивания объектов (OLE) особенно подходит для реализаций изобретения. Таким образом, ниже изобретение описано с использованием формата составного файла. Однако специалистам в данной области, внимательно изучившим нижеследующее описание, будет ясно, что другие форматы мультифайла могут реализовывать настоящее изобретение с различными модификациями механизма, описанными ниже, приспособленными к другим форматам мультифайла. Таким образом, очевидно, что варианты осуществления изобретения не ограничиваются описанными здесь.The invention provides a mechanism for applying transformations to files consisting of multiple parts. The mechanism provides a structure for specifying transformation information. Transformation information and transformed data coexist in the same document. The mechanism contemplated by the invention is preferably based on a multi-part file format that allows for multiple types of streams in a single document. The inventors have determined that the compound file format according to the standard for object linking and embedding (OLE) is particularly suitable for implementing the invention. Thus, the invention is described below using a compound file format. However, it will be clear to those skilled in the art who have carefully studied the following description that other multi-file formats can implement the present invention with various modifications of the mechanism described below, adapted to other multi-file formats. Thus, it is obvious that embodiments of the invention are not limited to those described herein.
Сначала опишем изобретение со ссылкой на один пример иллюстративной вычислительной среды, в которой можно реализовать варианты осуществления изобретения. Затем опишем подробный пример одной конкретной реализации изобретения. Альтернативные варианты осуществления также могут быть включены в отношении определенных деталей конкретной реализации.We first describe the invention with reference to one example illustrative computing environment in which embodiments of the invention may be implemented. Next, we describe a detailed example of one specific embodiment of the invention. Alternative embodiments may also be included with respect to certain details of a particular implementation.
Иллюстративная вычислительная среда, отвечающая изобретениюIllustrative Computing Environment According to the Invention
На фиг.1 показана функциональная блок-схема вычислительного устройства, которое можно использовать в реализациях настоящего изобретения. На фиг.1 показано иллюстративное вычислительное устройство, которое можно использовать в реализациях настоящего изобретения. Согласно фиг.1, в очень общей конфигурации вычислительное устройство 100 обычно содержит, по меньшей мере, один процессор 102 и системную память 104. В зависимости от конкретных конфигурации и типа вычислительного устройства 100 системная память 104 может представлять собой энергозависимое запоминающее устройство (например, ОЗУ), энергонезависимое запоминающее устройство (например, ПЗУ, флэш-память и т.д.) или какую-либо их комбинацию. В системной памяти 104 обычно размещаются операционная система 105, один или несколько программных модулей 106 и, в необязательном порядке, программные данные 107. В качестве примеров программных модулей 106 могут выступать приложение обозревателя (программы просмотра), приложение финансового управления, текстовый редактор и т.д. Эта базовая конфигурация представлена на фиг.1 компонентами, окруженными пунктирной линией 108.Figure 1 shows a functional block diagram of a computing device that can be used in implementations of the present invention. Figure 1 shows an illustrative computing device that can be used in implementations of the present invention. 1, in a very general configuration,
Вычислительное устройство 100 может иметь дополнительные особенности или функции. Например, вычислительное устройство 100 может также включать в себя дополнительные запоминающие устройства со сменными и/или стационарными носителями, в качестве которых могут выступать магнитные диски, оптические диски или лента. Такие дополнительные запоминающие устройства представлены на фиг.1 в виде запоминающего устройства 109 со сменным носителем и запоминающего устройства 110 со стационарным носителем. Компьютерные среды хранения данных могут включать в себя энергозависимые и энергонезависимые, сменные и стационарные среды хранения, реализующие любой способ и любую технологию хранения информации, как то: считываемых компьютером команд, структур данных, программных модулей или иных данных. Системная память 104, запоминающее устройство 109 со сменным носителем и запоминающее устройство 110 со стационарным носителем - все они являются примерами компьютерных сред хранения данных. Компьютерные среды хранения данных включают в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающие устройства на основе магнитных дисков или других магнитных носителей, или любую другую среду, которую можно использовать для хранения полезной информации и к которой можно осуществлять доступ посредством вычислительного устройства 100. Любая такая компьютерная среда хранения данных может входить в состав устройства 100.
Вычислительное устройство 100 может также содержать устройство(а) 112 ввода, например клавиатуру, мышь, перо, устройство голосового ввода, устройство тактильного ввода и т.д. Оно также может содержать устройство(а) 114 вывода, например дисплей, громкоговорители, принтер и т.д. Эти устройства общеизвестны в технике и не нуждаются в дополнительном описании.
Вычислительное устройство 100 также может содержать средства связи 116, позволяющие устройству 100 осуществлять связь с другими вычислительными устройствами 118, например, по сети. Средства связи 116 являются примером сред связи. Среды связи обычно реализуют компьютерно-считываемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, например несущей волне или ином транспортном механизме, и включают в себя любые среды доставки данных. Термин «модулированный сигнал данных» означает сигнал, одна или несколько характеристик которого изменяется определенным образом, что позволяет кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные среды, например проводную сеть или прямое проводное соединение, беспроводные среды, например акустические, ВЧ, инфракрасные и другие беспроводные среды. Используемый здесь термин «компьютерно-считываемые среды» подразумевает как среды хранения данных, так и среды передачи данных.
Общее рассмотрение компонентовComponent Overview
На фиг.2 показана функциональная блок-схема, иллюстрирующая в общих чертах компоненты среды, реализующей настоящее изобретение. Проиллюстрирован файл 202, состоящий из множественных частей, предпочтительно составной файл OLE. Модель документа OLE известна в технике и широко используется как механизм содержания многих несопоставимых типов данных в едином документе. Традиционно, составной файл OLE используется совместно с несколькими внедренными файлами или иного содержимого поддержки, связанного с единичным документом. Каждый элемент составного файла хранится так, чтобы приложение, создавшее элемент, могло манипулировать им. Каждый элемент хранится в виде потока, например потоков 204, 206 и 208, показанных на фиг.2. Согласно вышеуказанному, каждый поток может относиться к одному из нескольких типов. Например, поток 204 stream1 может представлять собой документ текстового редактора, поток 206 stream2 может представлять собой электронную таблицу, а поток 208 streamZ может быть графическим файлом.Figure 2 shows a functional block diagram illustrating in General terms the components of the environment that implements the present invention. Illustrated
До настоящего времени после запрашивания преобразования на файле 202, состоящем из множественных частей, требовалось, чтобы все составляющие файла 202, состоящего из множественных частей, (т.е. потоки 204-208) были непрерывными и обрабатывались совместно. Однако, согласно настоящему изобретению, потоки 204-208 не обязаны быть непрерывными. Напротив, потоки 204-208 могут быть основаны на секторах. В нижеследующем рассмотрении под секторизованными файлами будем понимать файлы, в которых сохранены множественные куски (порции) данных, представляющие целый поток. Множественные порции могут храниться последовательно, но обычно хранятся не последовательно. В одном варианте осуществления порции могут иметь фиксированный размер, например 512 байт. Альтернативно, не выходя за рамки объема настоящего изобретения, можно предусмотреть порции переменного размера. При редактировании потока новая порция данных может создаваться и сохраняться в байтах, не последовательных по отношению к другим порциям данных для потока. Таким образом, секторизованные файлы позволяют легко редактировать поток без дополнительных затрат на гарантию, что поток остается непрерывным.Until now, after requesting a conversion on a multiple-
Согласно подробно описанному ниже, настоящее изобретение позволяет преобразовывать конкретные порции данных 240, связанные с потоком (например, потоком 206) в файле 202, состоящем из множественных частей, без преобразования других потоков. Поскольку настоящее изобретение позволяет преобразовывать указанные потоки независимо от других потоков, изобретение обеспечивает большую гибкость для защиты данных и управления данными. Например, на фиг.2 показан поток 206 stream2, подвергнутый процессу преобразования. Поток 206 stream2 может представлять собой электронную таблицу, содержащую цены конкретных товаров. Поэтому может быть желательно защищать эту информацию цен, чтобы неавторизованные пользователи не могли видеть цены. Таким образом, данные 240, направляемые в поток 206 stream2, подвергаются цепи преобразований (т.е. преобразованиям 220-224). Специалисту в данной области очевидно, что любое количество преобразований может составлять цепь, и они могут размещаться в цепи в любом порядке. Конкретные преобразования, образующие цепь, и порядок, в котором преобразования размещены в цепи, представляют пространство 230 данных. В целом, пространство данных может задавать одно преобразование, а может задавать множественные преобразования. В вышеприведенном примере последнее преобразование (например, преобразование 224) записывает преобразованные данные в поток 206 stream2, который может размещаться на диске (не показан). Один вариант осуществления для использования механизма применения преобразований к файлам, состоящим из множественных частей, подробно описан ниже со ссылкой на фиг.4.As described in detail below, the present invention allows you to convert specific chunks of
Рассмотрение конкретного варианта осуществления изобретенияConsideration of a specific embodiment of the invention
На фиг.3 показано графическое представление одного варианта осуществления древовидной иерархии, которая представляет метаданные 210 преобразования, показанные на фиг.2. В целом, древовидную иерархию можно вводить в состав файла, состоящего из множественных частей, любым способом, совместимым с файлом, состоящим из множественных частей. Ниже описана древовидная иерархия применительно к составным файлам. В целом, составные файлы рассматриваются как «файловая система внутри файла». В составном файле имеется иерархия «хранилищ», аналогичных директориям в файловой системе, и «потоков», аналогичных файлам в файловой системе. На фиг.3 прямоугольники представляют потоки, а овалы представляют хранилища. Прежде чем перейти к описанию метаданных 210 преобразования, отвечающих настоящему изобретению, заметим, что потоки 204-208 (показанные на фиг.2) проиллюстрированы в этой иллюстративной иерархии под корнем 302. Задание потоков под корнем является обычной техникой для форматов составного файла.FIG. 3 is a graphical representation of one embodiment of a tree hierarchy that represents the
Теперь рассмотрим более подробно метаданные 210 преобразования, предусмотренные настоящим изобретением. Метаданные 210 преобразования хранятся в особом хранилище, именуемом "\006DataSpaces" 310 от корня 302. Хранилище 310 \006DataSpaces содержит поток 320 DataSpaceMap, хранилище 330 DataSpaceInfo и хранилище 340 TransformInfo. Для данного варианта осуществления имя, выбранное для особого хранилища, "\006DataSpaces", написано в контексте языка программирования С. Таким образом, в данном варианте осуществления имя начинается с единичного не буквенно-цифрового маркера и значения маркера, равного 6. В целом, имя, присвоенное конкретному хранилищу, является произвольным и зависит от реализации пользователя.Now consider in more detail the
Поток 320 DataSpaceMap [отображение пространств данных] отображает (преобразует) потоки (например, потоки 204-208) со связанным с ними пространством данных. В одном варианте осуществления поток 320 DataSpaceMap представляет собой таблицу, имеющую два столбца: столбец 322 ссылок на поток и столбец 324 DataSpaceName [имен пространств данных]. Содержимое столбца 322 ссылок на поток относится к одному из потоков (например, потоков 204-208), хранящихся в составном документе. Содержимое в DataSpaceName относится к конкретному пространству данных, которое задано для соответствующего потока, указанного в столбце 322 ссылки на поток. Одно пространство данных может быть связано с любым количеством потоков. Например, согласно фиг.3, пространство данных, обозначенное "DataSpaceName1", связано с потоком 204 stream1 и потоком 206 stream2. Хотя в вышеприведенном описании поток 320 DataSpaceMap представлен в виде таблицы, специалистам в данной области очевидно, что для идентификации и сопоставления потока с пространством данных можно использовать и другие форматы.
Хранилище 330 DataSpaceInfo [информация пространства данных] содержит один или несколько потоков DataSpaceName (например, потоки 332 и 334 DataSpaceName). Для описываемого варианта осуществления поток DataSpaceName назван в соответствии со стандартными соглашениями для коротких имен составных файлов. Каждый поток 332 и 334 DataSpaceName идентифицирует список 336 преобразований, связанных с соответствующим потоком 332 и 334 DataSpaceName. В одном варианте осуществления каждый из потоков 332 и 334 DataSpaceName может представлять собой список преобразований, образующих пространство данных. Потому что стек преобразований, порядок в списке 336, важен. В одном варианте осуществления первое преобразование 337 в списке 336 именуется «нижним» преобразованием, что означает, что преобразование 337 расположено ближе всех к битам в нижележащем потоке данных (например, потоке 204). Последнее преобразование 339 в списке 336 именуется «верхним» преобразованием, что означает, что преобразование 339 расположено ближе всех к потребителю/создателю данных (например, приложению). Согласно подробно описанному ниже со ссылкой на фиг.4, порядок, заданный в списке 336, определяет прохождение данных через преобразования.
Хранилище 340 TransformInfo [информация преобразований] содержит одно или несколько хранилищ TransformInstance [экземпляр преобразования] (например, хранилище 342, 344 и 346 TransformInstance). В одном варианте осуществления имена этих подхранилищ являются именами преобразований. В каждом из хранилищ 342, 344 и 346 TransformInstance имеется, по меньшей мере, один поток, названный "\006Primary" 350. Поток 350 \006Primary содержит существенную информацию о конкретном преобразовании, например TransformClassType 354 [тип класса преобразования] и TransformClassName 356 [имя класса преобразования]. Тип 354 TransformClassType обозначает конкретный класс преобразования, который реализует конкретное преобразование (например, LZ-сжатие, защиту «управления правами на цифровое содержимое» (DRM) и т.п.). В одном варианте осуществления имя 356 TransformClassName задано как строка, однозначно идентифицирующая класс (т.е. тип) преобразования. Строка, идентифицирующая класс, может быть именем класса для класса, реализующего преобразование. Тип 354 TransformClassType задает идентификатор типа, который указывает, как интерпретировать строку, заданную в имени 356 TransformClassName. Поток 350 \006Primary может также содержать пространство для данных TransformInstanceData 358 [данные экземпляра преобразования]. В данных 358 TransformInstanceData хранится информация, заданная для преобразования, заданного именем 356 TransformClassName и типом 354 TransformClassType. Например, если преобразование является преобразованием сжатия, то данные 358 TransformInstanceData могут содержать размер окна и т.п.Repository TransformInfo 340 [Transformation information] contains one or more TransformInstance repositories [Transformation instance] (for example,
Для некоторых преобразований данные 358 TransformInstanceData могут не обеспечивать достаточного пространства для хранения необходимой информации. Таким образом, согласно дополнительному усовершенствованию настоящее изобретение позволяет преобразованию сохранять дополнительную информацию в потоке TransformInstanceData (например, потоке 370 TransformInstanceData). Это допустимо, пока нет никаких конфликтов имен с потоком 350 \006Primary. Характер данных экземпляра преобразования изменяется в зависимости от типа преобразования.For some conversions,
Хотя вышеуказанная древовидная иерархия описывает один вариант осуществления формата документа для сохранения преобразованных данных совместно с их информацией преобразования, специалистам в данной области очевидно, что иерархия может изменяться, не влияя на работу настоящего изобретения. Поэтому, любая древовидная иерархия, в которой информация преобразования хранится совместно с преобразованными данными, не выходит за пределы настоящего изобретения. На фиг.4 изображена схема процесса преобразования, в котором используется механизм форматирования документов, имеющих преобразованные данные в соответствии с настоящим изобретением. В этом иллюстративном процессе преобразования приложение 400 пытается прочитать и записать файл 202, состоящий из множественных частей, описанный на фиг.2. В целом, каждый экземпляр класса преобразования берет в качестве ввода интерфейс IStream и выводит кодированные (т.е. преобразованные) данные на другой интерфейс IStream. Преобразования (например, преобразования 420 и 422) зарегистрированы, и пространство данных связано с потоком 206, которое уже задано, например, посредством программных интерфейсов приложения, обеспечиваемых составными документами OLE. Например, сначала, при создании потока 206, приложение, создавшее поток 206 в документе 202, состоящем из множественных частей, отвечает за указание, какие преобразования применять к данным. Для этого можно пользоваться списком аргументов, где каждый аргумент относится к (ссылается на) преобразованию.Although the above tree hierarchy describes one embodiment of a document format for storing converted data together with their conversion information, it will be apparent to those skilled in the art that the hierarchy may change without affecting the operation of the present invention. Therefore, any tree hierarchy in which conversion information is stored in conjunction with the converted data does not go beyond the scope of the present invention. Figure 4 shows a diagram of a conversion process that uses a formatting mechanism for documents having converted data in accordance with the present invention. In this illustrative conversion process, an application 400 attempts to read and write a
Доступ для чтения и записи осуществляется через уровень ОС. До настоящего времени операция записи предусматривала обращение к потоку 206 stream2 через интерфейс 414 IStream. Однако, согласно настоящему изобретению, перед интерфейсом 414 IStream можно вставить одно или несколько преобразований. Каждое преобразование (например, преобразование 420 и 422) берет интерфейс IStream в качестве ввода (интерфейс 410 и 412 IStream, соответственно) и выводит свои кодированные (т.е. преобразованные) данные на другой интерфейс IStream (интерфейс 412 и 414 IStream, соответственно).Read and write access is through the OS level. To date, the write operation has provided access to stream 206 stream2 through the IStream interface 414. However, according to the present invention, one or more transforms can be inserted in front of the IStream interface 414. Each transform (for example, transform 420 and 422) takes the IStream interface as input (IStream interface 410 and 412, respectively) and outputs its encoded (i.e., converted) data to another IStream interface (IStream interface 412 and 414, respectively) .
Аналогично, когда приложение 400 пытается читать поток 206 stream2 в файле 202, состоящем из множественных частей, можно вставить одно или несколько обратных преобразований (например, обратных преобразований 450 и 452). Количество обратных преобразований равно количеству преобразований, чтобы данные правильно декодировались и, таким образом, приложение могло понимать данные. Теперь, со ссылкой на фиг.5, опишем, как именно преобразования вставляются между приложением 400 и потоком 206.Similarly, when an application 400 tries to read
На фиг.5 показана логическая последовательность операций, иллюстрирующая в целом процесс доступа к преобразованным данным в составном файле, согласно изобретению. Процесс 500 начинается с начального этапа 501, на котором приложение запрашивает доступ к данным в потоке файла, состоящего из множественных частей. Информация 210 преобразования для потока уже задана.5 is a logical flowchart illustrating the overall process of accessing converted data in a composite file according to the invention.
На этапе принятия решения производится определение, является ли поток членом пространства данных. Согласно фиг.3, для одного варианта осуществления, это определение производится путем поиска в отображении пространств данных ссылки 322 на поток, которая идентифицирует запрашиваемый поток. Если ссылка 322 на поток, связанная с потоком, не найдена, значит для потока не задано преобразований, и обработка заканчивается. В этом случае, приложение обращается к данным таким же образом, как это делалось до настоящего изобретения. Если же в отображении пространств данных содержится ссылка 322 на поток, то обработка переходит к этапу 504.At the decision-making stage, a determination is made whether the stream is a member of the data space. Referring to FIG. 3, for one embodiment, this determination is made by searching the mapping of the data spaces for a
Этап 504 обозначает получение имени пространства данных, связанного со ссылкой 322 на поток.Step 504 denotes obtaining a data space name associated with a
На этапе 506 производится поиск в хранилище DataSpaceInfo (информации пространства данных) с использованием имени пространства данных (DataSpaceName), полученного на этапе 504, для идентификации потока DataSpaceName, связанного с именем пространства данных, указанным в отображении пространств данных (DataSpaceMap). Поток DataSpaceName содержит список преобразований, связанных с этим именем пространства данных.At
На этапе 508 производится идентификация преобразования из списка. В зависимости от того, производится ли доступ для чтения или записи, преобразование может кодировать данные или декодировать данные, соответственно. В потоке DataSpaceName перечислены все преобразования в конкретном порядке. Если доступ осуществляется для записи, то порядок будет сверху вниз. Если доступ осуществляется для чтения, то порядок будет снизу вверх.At step 508, a transformation is identified from the list. Depending on whether read or write access is made, the conversion may encode data or decode data, respectively. The DataSpaceName stream lists all the transformations in a specific order. If access is for recording, then the order will be from top to bottom. If access is for reading, then the order will be from bottom to top.
Этап 510 обозначает применение идентифицированного преобразования. При применении преобразования, для правильного преобразования данных используются данные экземпляра преобразования. Если доступ производится для записи, то применяется (кодирующее) преобразование. Если доступ производится для чтения, то применяется обратное (декодирующее) преобразование.Step 510 denotes the application of the identified transformation. When applying a transform, the transform instance data is used to correctly transform the data. If access is made for recording, then a (coding) conversion is applied. If access is made for reading, then the inverse (decoding) conversion is applied.
На этапе 512 принятия решения производится определение, содержит ли пространство данных какие-либо дополнительные преобразования, включенные в цепь. Для этого можно посмотреть, ссылается ли список 336 на какие-либо еще экземпляры преобразования. Если было применено последнее преобразование в пространстве данных, то последнее преобразование выводит данные, и процесс завершается. Если же в списке есть еще одно преобразование, то обработка возвращается к этапу 508 и продолжается, как описано выше, пока не будет применено последнее преобразование.At
Кроме того, специалисту в данной области очевидно, что функции, обеспечиваемые процессом 300, могут быть реализованы разными способами. Например, может иметь место отображение непосредственно имени потока в список преобразований (с пропуском использования пространства данных). Таким образом, настоящее изобретение включает в себя этот и другие варианты осуществления для отображения потока в его информацию преобразования. Процесс 500 иллюстрирует один такой вариант осуществления.In addition, it will be apparent to those skilled in the art that the functions provided by process 300 can be implemented in various ways. For example, there may be a mapping of the stream name directly to the list of transformations (with the omission of using the data space). Thus, the present invention includes this and other embodiments for mapping a stream to its conversion information.
Вышеизложенные описание изобретения, примеры и данные обеспечивают полное описание производства и использования состава изобретения. Поскольку в рамках сущности и объема изобретения возможны множественные варианты осуществления изобретения, изобретение задано нижеприведенной формулой изобретения.The foregoing description of the invention, examples and data provide a complete description of the production and use of the composition of the invention. Since multiple embodiments of the invention are possible within the spirit and scope of the invention, the invention is defined by the claims below.
Claims (27)
принимают запрос доступа к потоку в файле, состоящем из множественных частей, причем файл, состоящий из множественных частей, включает в себя потоки и пространства данных, при этом каждое пространство данных задает список преобразований, подлежащих применению в заданном порядке к данным внутри потока,
идентифицируют упомянутый список преобразований, связанных с потоком, причем список идентифицируют из файла, состоящего из множественных частей, и
выполняют преобразования в порядке, указанном в списке преобразований, над данными перед завершением обработки запроса.11. A computer system having a mechanism for applying transformations to files consisting of multiple parts, comprising a processor, a memory allocated for a plurality of computer-executable instructions loaded into memory for execution by a processor, the computer-executing instructions performing a method comprising the steps of
receive a request for access to a stream in a file consisting of multiple parts, the file consisting of multiple parts includes streams and data spaces, with each data space defining a list of transformations to be applied in a given order to the data inside the stream,
identifying said list of transformations associated with the stream, the list being identified from a file consisting of multiple parts, and
perform transformations in the order specified in the list of transformations on the data before completing the processing of the request.
второй поток, который перечисляет каждое из преобразований для упомянутого потока, и третий поток для каждого из преобразований, причем третий поток идентифицирует информацию, связанную с преобразованием.21. A computer-readable medium, the data structure of which contains encoded data, comprising a first stream including a display that correlates a stream in a file consisting of multiple parts with a name for a list of transformations to be applied in a given order to said stream,
a second stream that lists each of the transforms for said stream, and a third stream for each of the transforms, the third stream identifying information associated with the transform.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2004119948/09A RU2348069C2 (en) | 2003-05-17 | 2003-05-17 | Mechanism of modification application to files consisting of multiple parts |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2004119948/09A RU2348069C2 (en) | 2003-05-17 | 2003-05-17 | Mechanism of modification application to files consisting of multiple parts |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2004119948A RU2004119948A (en) | 2005-03-27 |
RU2348069C2 true RU2348069C2 (en) | 2009-02-27 |
Family
ID=35560371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2004119948/09A RU2348069C2 (en) | 2003-05-17 | 2003-05-17 | Mechanism of modification application to files consisting of multiple parts |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2348069C2 (en) |
-
2003
- 2003-05-17 RU RU2004119948/09A patent/RU2348069C2/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
RU2004119948A (en) | 2005-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7631022B2 (en) | Information processing apparatus and recording medium | |
US6789094B2 (en) | Method and apparatus for providing extended file attributes in an extended attribute namespace | |
JP5612227B2 (en) | Document storage using multiple representations | |
US20050267894A1 (en) | XML metabase for the organization and manipulation of digital media | |
CN101169795B (en) | Information processing apparatus, information processing method, program and program recording medium | |
US7958133B2 (en) | Application conversion of source data | |
US7523221B2 (en) | Mechanism for applying transforms to multi-part files | |
TW200408980A (en) | System and method for managing file names for file system filter drivers | |
KR20080005491A (en) | Efficiently describing relationships between resources | |
KR101535703B1 (en) | Apparatus and method for converting Value Object | |
CN104111922A (en) | Processing method and device of streaming document | |
US20150347353A1 (en) | Document layering platform | |
US20060184554A1 (en) | System and method for extensible metadata architecture for digital images using in-place editing | |
US20060184576A1 (en) | System and method for extensible metadata architecture for digital images | |
US8244694B2 (en) | Dynamic schema assembly to accommodate application-specific metadata | |
US9613089B2 (en) | Form template refactoring | |
US20060242141A1 (en) | Abstracted metadata policy component and related architecture | |
US20110078552A1 (en) | Transclusion Process | |
KR100965709B1 (en) | Mechanism for applying transforms to multi-part files | |
RU2348069C2 (en) | Mechanism of modification application to files consisting of multiple parts | |
US20120109911A1 (en) | Compression Of XML Data | |
US9678983B1 (en) | Systems and methods for automatically passing hints to a file system | |
Rahma et al. | Proposed steganographic method for data hiding in Microsoft word documents structure | |
KR20050006975A (en) | Method for Controlling Content Files Using Identification | |
Kowalczyk | Curating Digital Cultural Heritage Materials |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150306 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20190518 |