KR20060037217A - Mechanism for applying transforms to multi-part files - Google Patents

Mechanism for applying transforms to multi-part files Download PDF

Info

Publication number
KR20060037217A
KR20060037217A KR1020047010758A KR20047010758A KR20060037217A KR 20060037217 A KR20060037217 A KR 20060037217A KR 1020047010758 A KR1020047010758 A KR 1020047010758A KR 20047010758 A KR20047010758 A KR 20047010758A KR 20060037217 A KR20060037217 A KR 20060037217A
Authority
KR
South Korea
Prior art keywords
data
stream
list
transform
transformation
Prior art date
Application number
KR1020047010758A
Other languages
Korean (ko)
Other versions
KR100965709B1 (en
Inventor
마이클 제이. 힐버그
로저 쳉
데이비드 비. 오른스테인
제이슨 엠. 카힐
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060037217A publication Critical patent/KR20060037217A/en
Application granted granted Critical
Publication of KR100965709B1 publication Critical patent/KR100965709B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Described is a system and method for applying transforms to multi-part files (202). A request is received to access a stream within a multi-part file. Upon receipt of the request, a list of transforms associated with the stream is identified (210). The list is also included within the multi-part file (202). The transforms specified in the list of transforms are performed on data before completing the request. If the request is a write, the transforms encodes the data (414). If the request is a read, the transforms decode the data (430), the list of transforms is order dependent. The list of transforms includes a data structure having a first stream that includes a map that correlates the stream with a name for the list of transforms, a second stream that lists each of the transforms for the stream, as well as a third stream for each of the transforms listed that identifies information associated with the transform.

Description

멀티-파트 파일에 변환을 적용하기 위한 시스템 및 방법{MECHANISM FOR APPLYING TRANSFORMS TO MULTI-PART FILES}System and method for applying transformations to multi-part files {MECHANISM FOR APPLYING TRANSFORMS TO MULTI-PART FILES}

오늘날 컴퓨터 시스템들은 통상적으로 대량의 데이터를 여러 파일들에 저장한다. 이들 파일에 대한 포맷은 워드 프로세서, 스프레드쉬트 등의 여러 애플리케이션과 호환될 수 있는 여러 상이한 포맷들 중 하나일 것이다. 파일을 다른 컴퓨터로 전송하여 다른 컴퓨터가 그 파일 내의 데이터를 보거나 또는 조작할 수 있게 하는 것이 자주 필요하다. 때때로, 파일이 매우 큰 경우, 파일을 다른 컴퓨터로 보내기 이전에 파일에 대한 변환(예를 들어, 압축 등)이 수행된다. 파일을 압축함으로써, 데이터를 다른 컴퓨터로 보내기 위한 대역폭이 덜 필요하게 된다. 다른 상황에서, 다른 변환(예를 들어, 암호화 등)이 수행되어 권한이 없는 사용자들이 데이터를 보는 것을 예방할 수 있다.Today's computer systems typically store large amounts of data in several files. The format for these files will be one of several different formats that are compatible with various applications such as word processors, spreadsheets, and the like. It is often necessary to transfer a file to another computer so that another computer can view or manipulate the data in the file. Sometimes, if the file is very large, a conversion (eg, compression, etc.) is performed on the file before sending the file to another computer. By compressing files, less bandwidth is needed to send data to other computers. In other situations, other conversions (eg, encryption, etc.) may be performed to prevent unauthorized users from viewing the data.

이들 변환 중 일부는 특정 인코딩 방법을 갖고, 별도의 파일[예를 들어, 사전(dictionary) 등]을 사용하여 상기 특정 인코딩 방법에 관한 정보를 저장한다. 별도의 파일은 변환된 파일을 액세스할 때 사용되어야 한다. 별도의 파일이 손상되거나, 손실되거나 또는 사용할 수 없게 되면, 변환된 파일은 쓸모없게 된다. 또한, 이들 변환 중 일부가 인코드된 데이터를 인터리빙하고 정보를 처리하는 그들 자신의 특정 인코딩 방법을 포함하기 때문에, 파일이 일단 변환되면, 파일은 공유 될 수 없거나 또는 그 위에 공통 처리(common processing)를 수행할 수 없다. 또한, 파일을 변환하기 이전에, 전류 변환은 파일 내의 데이터가 연속적인 바이트로 배치될 것을 요구한다. 파일에 대한 바이트가 연속적일 것을 보장하는 것은 많은 오버헤드를 소비하므로, 자주 편집되는 파일들에 대하여는 불가능하다. 따라서, 이들 변환이 매우 유용하지만, 이들이 구현되는 방식은 사용자들에게 다재 다능한 경험을 제공하지는 못한다.Some of these transformations have a particular encoding method and use a separate file (eg, a dictionary, etc.) to store information about that particular encoding method. A separate file should be used to access the converted file. If a separate file is damaged, lost or becomes unusable, the converted file becomes useless. In addition, because some of these conversions include their own specific encoding methods for interleaving the encoded data and processing the information, once the file is converted, the file cannot be shared or has common processing thereon. Cannot be performed. Also, before converting the file, current conversion requires that data in the file be placed in consecutive bytes. Ensuring that bytes for a file are contiguous consumes a lot of overhead and is therefore not possible for files that are frequently edited. Thus, while these transformations are very useful, the way they are implemented does not provide a versatile experience for users.

<발명의 요약>Summary of the Invention

본 발명은 사용자들에게 보다 우수한 융통성을 제공하는 변환을 구현하는 시스템 및 방법에 관한 것이다. 요약하면, 본 발명은 멀티-파트(multi-part) 파일 내에 하나 이상의 변환과 관련되는 변환 정보를 저장하는 메커니즘을 제공한다. 멀티-파트 파일은 또한 상기 하나 이상의 변환이 적용되는 데이터를 포함한다. 따라서, 본 발명은 멀티-파트 파일용 파일 포맷을 제공하여, 데이터를 액세스하는 애플리케이션이 변환된 파일을 용이하게 액세스할 수 있다. 본 발명에 따르면, 다수의 데이터 변환이 함께 연쇄화될(chained) 수 있다. 이들 연쇄화된 데이터 변환은 "데이터 스페이스(data spaces)"로 참조된다. 각각의 데이터 스페이스는 함께 연쇄화된 변환들에 대한 고유의 순서 및 타입(order and type)을 갖는다. 예를 들어, 2개의 데이터 스페이스가 동일한 변환을 특정하지만, 상기 변환을 적용하기 위해 서로 다른 순서를 특정하기도 한다.The present invention is directed to a system and method for implementing transformations that provide users with greater flexibility. In summary, the present invention provides a mechanism for storing translation information relating to one or more transformations in a multi-part file. The multi-part file also contains data to which the one or more transformations are applied. Accordingly, the present invention provides a file format for a multi-part file so that an application accessing the data can easily access the converted file. According to the present invention, multiple data transformations can be chained together. These concatenated data transformations are referred to as "data spaces." Each data space has a unique order and type for transforms chained together. For example, two data spaces specify the same transformation, but also specify a different order to apply the transformation.

본 발명의 다른 양상에 따르면, 멀티-파트 파일은 복수의 스트림을 포함한다. 각각의 스트림은 데이터 스페이스들 중 어느 하나와 관련된다. 따라서, 본 발명에 따르면, 멀티-파트 내의 일부 스트림이 변환되는 한편 다른 스트림들은 그들의 본래 포맷으로 남는다. 전체 멀티-파트 파일의 변환을 요구하지 않고도 특정 스트림을 변환하는 이러한 능력은, 사용자가 멀티-파트 파일 내의 민감한 정보들만을 암호화할 수 있도록 하는 등 사용자들에게 우수한 유연성을 제공한다(예를 들어, 문서 편집 등).According to another aspect of the invention, a multi-part file comprises a plurality of streams. Each stream is associated with any one of the data spaces. Thus, according to the invention, some streams in the multi-part are converted while others remain in their original format. This ability to convert a particular stream without requiring conversion of the entire multi-part file gives the user great flexibility, for example allowing the user to encrypt only sensitive information within the multi-part file (eg, Document editing, etc.)

따라서, 본 발명은 멀티-파트 파일들에 변환을 적용하기 위한 시스템 및 방법에 관한 것이다. 멀티-파트 파일 내의 스트림을 액세스하기 위한 요청이 수신된다. 요청을 수신하면, 스트림과 관련된 변환 목록이 확인된다. 목록은 또한 멀티-파트 파일 내에 포함된다. 요청을 완료하기 이전에 변환 목록에서 특정된 변환이 데이터에 대하여 수행된다. 요청이 기입(write)인 경우, 변환은 데이터를 인코드한다. 요청이 판독(read)인 경우, 변환은 데이터를 디코드한다. 변환 목록은 순서에 의존하는 것이다. 변환 목록은 스트림을 변환 목록에 대한 명칭과 상관(correlate)시키는 맵을 포함하는 제1 스트림을 갖는 데이터 구조를 포함한다. 제2 스트림은 스트림에 대한 변환 각각을 열거한다. 열거된 변환 각각에 대한 제3 스트림은 변환과 관련되는 정보를 확인한다.Accordingly, the present invention relates to a system and method for applying a transform to multi-part files. A request is received to access a stream in a multi-part file. Upon receiving the request, the list of translations associated with the stream is checked. The list is also included in the multi-part file. The conversion specified in the conversion list is performed on the data before completing the request. If the request is a write, the transform encodes the data. If the request is a read, the transform decodes the data. The conversion list is order dependent. The translation list includes a data structure having a first stream that contains a map that correlates the stream with a name for the translation list. The second stream lists each of the transforms for the stream. The third stream for each of the listed transforms identifies the information associated with the transform.

도 1은 본 발명의 실시예에 사용될 수 있는 컴퓨팅 디바이스를 나타내는 기능 블럭도이다.1 is a functional block diagram illustrating a computing device that may be used in an embodiment of the invention.

도 2는 본 발명에 따른 변환 프로세스의 개관을 일반적으로 나타내는 기능 흐름도이다.2 is a functional flow diagram generally illustrating an overview of the conversion process according to the present invention.

도 3은 도 2에 도시된 변환 메타데이터를 나타내는 예시적인 트리 계층의 그래픽 표현이다.3 is a graphical representation of an exemplary tree hierarchy representing the transform metadata shown in FIG. 2.

도 4는 변환 프로세스의 그래픽 표현이다.4 is a graphical representation of the conversion process.

도 5는 본 발명의 일 실시예에 따라 멀티-파트 파일 내에서 변환된 데이터를 액세스하는 프로세스를 일반적으로 나타내는 논리 흐름도이다.5 is a logic flow diagram generally illustrating the process of accessing converted data within a multi-part file, in accordance with an embodiment of the present invention.

본 발명은 멀티-파트 파일들에 변환을 적용하는 메커니즘을 제공한다. 이러한 메커니즘은 변환 정보를 특정하는 구조를 제공한다. 변환 정보 및 변환된 데이터는 동일한 문서 내에 공존한다. 본 발명의 메커니즘이 바람직하게는 하나의 문서 내에 여러 타입의 스트림을 허용하는 멀티-파트 파일에 기초한다. 본 발명의 발명자들은 OLE(Object Linking and Embeddig) 복합 파일 포맷이 본 발명의 구현에 특히 적합하다고 판정하였다. 따라서, 이하의 논의는 상기 복합 파일 포맷을 사용하여 설명한다. 그러나, 당업자가 이하의 설명을 주의깊게 읽고 나면, 다른 멀티-파일 포맷들을 적응시키도록 이하 설명되는 메커니즘에 여러 변형을 가하여, 다른 멀티-파일 포맷들도 본 발명을 구현할 수 있다는 것을 이해할 것이다. 따라서, 본 발명의 구현은 본 명세서에 개시되는 것에 제한되는 것이 아니다.The present invention provides a mechanism for applying transformations to multi-part files. This mechanism provides a structure for specifying translation information. The conversion information and the converted data coexist in the same document. The mechanism of the present invention is preferably based on a multi-part file allowing multiple types of streams in one document. The inventors of the present invention have determined that the Object Linking and Embeddig (OLE) composite file format is particularly suitable for the implementation of the present invention. Thus, the following discussion is described using the composite file format. However, once the skilled person has carefully read the following description, it will be understood that other multi-file formats may also implement the present invention, with various modifications to the mechanisms described below to adapt other multi-file formats. Thus, implementations of the invention are not limited to those disclosed herein.

본 발명은 먼저 본 발명의 실시예가 구현될 수 있는 예시적인 컴퓨팅 환경의 예를 참조하여 설명될 것이다. 다음에, 본 발명의 특정 실시예의 상세한 예가 설명될 것이다. 대안적인 실시예들이 또한 이러한 특정 실시예의 상세한 부분에 포함될 수 있다. The invention will first be described with reference to examples of exemplary computing environments in which embodiments of the invention may be implemented. Next, detailed examples of specific embodiments of the present invention will be described. Alternative embodiments may also be included in the details of this particular embodiment.                 

본 발명의 예시적인 컴퓨팅 환경Exemplary Computing Environments of the Invention

도 1은 본 발명의 실시예에서 사용될 수 있는 컴퓨팅 디바이스를 나타내는 기능 블럭도이다. 도 1은 본 발명의 예시적인 실시예에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 나타낸다. 도 1을 참조하면, 매우 기본적인 구성에서, 컴퓨팅 디바이스(100)는 통상적으로 적어도 하나의 처리 유닛(102)과 시스템 메모리(104)를 포함한다. 컴퓨팅 디바이스의 정확한 구성 및 타입에 따라, 시스템 메모리(104)는 휘발성(RAM 등), 비휘발성(ROM, 플래시 메모리 등) 또는 이들 2가지의 조합일 수 있다. 시스템 메모리(104)는 통상적으로 운영 체제(105)와 하나 이상의 프로그램 모듈(106)을 포함하고, 프로그램 데이터(107)를 포함할 수도 있다. 프로그램 모듈(106)의 예로는 브라우저 애플리케이션, 재정 관리 애플리케이션, 워드 프로세서 등이 포함된다. 이러한 기본 구성은 도 1에서 점선 108 내의 컴포넌트들로 도시되고 있다.1 is a functional block diagram illustrating a computing device that may be used in an embodiment of the invention. 1 illustrates an example computing device that may be used in an exemplary embodiment of the present invention. Referring to FIG. 1, in a very basic configuration, computing device 100 typically includes at least one processing unit 102 and system memory 104. Depending on the exact configuration and type of computing device, system memory 104 may be volatile (RAM, etc.), nonvolatile (ROM, flash memory, etc.) or a combination of the two. System memory 104 typically includes an operating system 105 and one or more program modules 106, and may include program data 107. Examples of program module 106 include browser applications, financial management applications, word processors, and the like. This basic configuration is shown in FIG. 1 as the components within dashed line 108.

컴퓨팅 디바이스(100)는 부가적인 특징들 또는 기능들을 구비할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는 또한 예를 들어 마그네틱 디스크, 광 디스크 또는 테이프 등 부가적인 스토리지 디바이스들(이동식 및/또는 이동불가식)을 포함할 수 있다. 이러한 부가적인 스토리지는 도 1에 이동식 스토리지(109)와 이동불가식 스토리지(110)로 도시된다. 컴퓨터 스토리지 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등 정보의 저장을 위한 임의의 방식 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함할 수 있다. 시스템 메모리(104), 이동식 스토리지(109) 및 이동불가식 스토리 지(110)는 모두 컴퓨터 스토리지 매체의 예이다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disks) 또는 기타 광 스토리지, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 스토리지 또는 기타 마그네틱 스토리지 디바이스, 또는 소정 정보를 저장하는데 사용될 수 있고 컴퓨팅 디바이스(100)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이에 제한되는 것은 아니다. 임의의 이러한 컴퓨터 스토리지 매체가 디바이스(100)의 일부분일 수 있다. 컴퓨팅 디바이스(100)는 또한 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등 입력 디바이스(112)를 포함한다. 디스플레이, 스피커, 프린터 등 출력 디바이스(114)가 포함될 수도 있다. 이들 디바이스는 공지된 것으로 더 이상 논의될 필요는 없다.Computing device 100 may have additional features or functions. For example, computing device 100 may also include additional storage devices (removable and / or non-removable) such as, for example, magnetic disks, optical disks or tapes. Such additional storage is shown in FIG. 1 as removable storage 109 and non-removable storage 110. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any manner or technology for storage of information such as computer readable instructions, data structures, program modules or other data. System memory 104, removable storage 109 and non-removable storage 110 are all examples of computer storage media. Computer storage media may include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks or other optical storage, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage devices, or certain information. Include, but are not limited to, any other medium that can be used to store and accessible by the computing device 100. Any such computer storage media may be part of the device 100. Computing device 100 also includes input device 112, such as a keyboard, mouse, pen, voice input device, touch input device, and the like. Output devices 114, such as displays, speakers, printers, and the like may be included. These devices are known and need not be discussed further.

컴퓨팅 디바이스(100)는 또한 디바이스(100)가 네트워크를 통하는 등 다른 컴퓨팅 디바이스(118)과 통신할 수 있게 하는 통신 접속(116)을 포함할 것이다. 통신 접속(116)은 통신 매체의 일 예이다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파나 기타 전송 메커니즘 등 변조된 데이터 신호의 기타 데이터에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호(modulated data signal)"라는 용어는 하나 이상의 그 특징 세트를 갖는 신호 또는 신호의 정보를 인코드하는 방식으로 변경된 신호를 의미한다. 예를 들어, 이에 제한되는 것은 아니지만, 통신 매체는 유선 네트워크 또는 직접-배선 접속 등 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등 무선 매체를 포함한다. 본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 스토리지 매체 및 통신 매체 양자 모두를 포함한다.Computing device 100 will also include a communication connection 116 that enables device 100 to communicate with other computing devices 118, such as through a network. Communication connection 116 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier or other transmission mechanism, and includes any information delivery media. The term " modulated data signal " means a signal that has been modified in such a manner as to encode a signal or signal information having one or more of its feature sets. For example, but not limited to, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.

컴포넌트에 관한 일반적인 논의General discussion about components

도 2는 본 발명을 구현하는 환경의 컴포넌트들의 개관을 일반적으로 나타내는 기능 흐름도이다. 바람직하게는 OLE 복합 파일인 멀티-파트 파일(202)이 도시되어 있다. OLE 문서 모델은 공지된 것으로, 단일 문서 내에 다수의 이종 타입의 데이터를 포함하기 위한 메커니즘으로서 널리 알려져 있다. 통상적으로, OLE 복합 파일은 여러 임베디드 파일들 또는 다른 지원 콘텐츠를 단일 문서와 연관시키는 것과 관련하여 사용된다. 복합 파일의 엘리먼트 각각은 해당 엘리먼트를 생성하였던 애플리케이션에 의해 조작될 수 있는 방식으로 저장된다. 각각의 엘리먼트는 도 2에 도시된 스트림(204, 206 및 208) 등의 스트림으로서 저장된다. 위에 언급된 바와 같이, 각각의 스트림은 여러 타입들 중 하나일 것이다. 예를 들어, 스트림 1(204)은 워드 프로세싱 문서이고, 스트림 2(206)는 스프레드시트이며, 스트림 Z(208)는 그래픽 파일일 수 있다.2 is a functional flow diagram generally illustrating an overview of components of an environment implementing the invention. Multi-part file 202 is shown, which is preferably an OLE composite file. The OLE document model is known and is well known as a mechanism for including multiple heterogeneous types of data in a single document. Typically, OLE compound files are used in connection with associating multiple embedded files or other supporting content with a single document. Each element of the compound file is stored in a way that can be manipulated by the application that created the element. Each element is stored as a stream, such as streams 204, 206 and 208 shown in FIG. 2. As mentioned above, each stream will be one of several types. For example, stream 1 204 may be a word processing document, stream 2 206 may be a spreadsheet, and stream Z 208 may be a graphics file.

과거에, 멀티-파트 파일(202)에 대한 변환 요청시, 멀티-파트 파일(202)의 전체 콘텐츠(즉, 스트림 204 - 208 등)는 연속적일 것이 요구되었고, 함께 변환되었다. 그러나, 본 발명에 따르면, 스트림(204 - 208)은 연속적이지 않아도 된다. 오히려, 스트림(204 - 208)은 섹터-기반으로 저장된다. 이하 논의에서, 섹터-기반 파일들은, 저장되어 전체 스트림을 나타내는 다수 청크(chunk)의 데이터를 갖는 파일들을 일컫는다. 청크는 연속적으로 저장되어도 좋지만, 통상적으로는 불연속적으로 저장된다. 일 실시예에서, 청크는 512 바이트로 고정된 고정 사이즈이어도 좋다. 대안적으로, 청크는 본 발명의 사상을 벗어나지 않고 가변 사이즈이어도 좋다. 스트림이 편집되는 경우, 새로운 청크의 데이터가 생성되고, 스트림에 대한 다른 청크의 데이터와 관련하여 불연속적인 바이트로 저장될 수 있다. 따라서, 섹터-기반 파일들은 스트림이 연속성을 유지하는 것을 보장한다는 오버헤드가 없이 스트림의 편집을 용이하게 할 수 있다.In the past, upon conversion request for multi-part file 202, the entire contents of multi-part file 202 (ie, streams 204-208, etc.) were required to be contiguous and were converted together. However, in accordance with the present invention, the streams 204-208 need not be continuous. Rather, streams 204-208 are stored sector-based. In the discussion that follows, sector-based files refer to files having multiple chunks of data that are stored and represent the entire stream. The chunks may be stored continuously but are typically stored discontinuously. In one embodiment, the chunk may be a fixed size fixed at 512 bytes. Alternatively, the chunks may be of variable size without departing from the spirit of the invention. When the stream is edited, new chunks of data can be created and stored as discrete bytes in relation to the data of the other chunks for the stream. Thus, sector-based files can facilitate editing of the stream without the overhead of ensuring that the stream maintains continuity.

이하 상세히 설명되는 바와 같이, 본 발명은 다른 스트림을 변환하지 않고도 멀티-파트 파일(202) 내의 스트림[예를 들어, 스트림(206)]과 관련된 특정 청크의 데이터(240)가 변환될 수 있게 한다. 본 발명은 특정 스트림이 다른 스트림과는 독립적으로 변환될 수 있게 하기 때문에, 본 발명은 데이터의 보안 및 제어에 우수한 융통성을 제공한다. 예를 들어, 도 2는 변환 프로세스를 경험하고 있는 스트림 2(206)를 도시한다. 스트림 2(206)는 특정 아이템과 관련된 비용을 포함하는 스프레드시트를 나타낼 수 있다. 따라서, 이러한 비용 정보를 보호하여 권한이 없는 사용자들이 비용을 볼 수 없게 하는 것이 바람직할 것이다. 따라서, 스트림 2(206)용 데이터(240)는 일련의 변환[예를 들어, 변환(220 -224)]을 경험한다. 당업자가 이해하듯이, 임의 갯수의 변환이 연쇄화될(chained) 수 있고, 임의의 순서로 연쇄화될 수 있다. 연쇄화되는 특정 변환 및 변환들이 연쇄화되는 순서는 데이터 스페이스(230)를 나타낸다. 일반적으로, 데이터 스페이스는 하나의 변환을 특정하거나 또는 다수의 변환을 특정할 수 있다. 위 예에서, 최종 변환[예를 들어, 변환(224)]은 변환된 데이터를 디스크(도시되지 않음) 상에 존재하는 스트림 2(206)에 기입한다. 멀티-파트 파일에 변환을 적용하는 메커니즘의 일 실시예가 이하 도 4와 관련하여 상세히 설명된다.As will be described in detail below, the present invention allows certain chunks of data 240 associated with a stream (eg, stream 206) in a multi-part file 202 to be converted without converting another stream. . Since the present invention allows certain streams to be converted independently of other streams, the present invention provides excellent flexibility in the security and control of data. For example, FIG. 2 shows stream 2 206 undergoing a conversion process. Stream 2 206 may represent a spreadsheet that includes costs associated with a particular item. Therefore, it would be desirable to protect such cost information so that unauthorized users cannot see the cost. Thus, data 240 for stream 2 206 undergoes a series of transformations (eg, transformations 220-224). As will be appreciated by those skilled in the art, any number of transformations may be chained and may be chained in any order. The particular transformation that is concatenated and the order in which the transformations are concatenated represent data space 230. In general, a data space can specify one transformation or multiple transformations. In the above example, the final transform (eg, transform 224) writes the transformed data to stream 2 206 that resides on disk (not shown). One embodiment of a mechanism for applying a transform to a multi-part file is described in detail with respect to FIG. 4 below.

본 발명의 특정 실시예의 논의Discussion of Specific Embodiments of the Invention

도 3은 도 2에 도시된 변환 메타데이터(210)를 표현하는 트리 계층의 일 실시예의 그래픽 표현이다. 일반적으로, 트리 계층은 멀티-파트 파일과 호환가능한 임의의 방식으로 멀티-파트 파일 내에 포함될 수 있다. 이하 논의는 복합 파일들을 참조하여 트리 계층을 설명한다. 개략적으로, 복합 파일들은 통상적으로 "파일 내의 파일 시스템(file system within a file)"로서 고려된다. 복합 파일 내에는 파일 시스템에서의 디렉토리와 유사한 "스토리지(storages)" 및 파일 시스템에서의 파일과 유사한 "스트림(streams)"의 계층이 존재한다. 도 3에서, 사각형 박스들은 스트림을 나타내고, 타원형은 스토리지를 나타낸다. 본 발명의 변환 메타데이터(210)를 설명하기 이전에, 스트림(204 - 208; 도 2에 도시됨)은 본 예시적인 계층에서 루트(302) 아래에 도시된다는 것에 주목하자. 루트 아래에 스트림을 정의하는 것은 복합 파일 포맷에 대한 통상적인 기술이다.3 is a graphical representation of one embodiment of a tree hierarchy representing the transform metadata 210 shown in FIG. In general, the tree hierarchy may be included in the multi-part file in any manner compatible with the multi-part file. The discussion below describes the tree hierarchy with reference to compound files. In general, compound files are typically considered as "file system within a file". Within a compound file is a hierarchy of "storages" similar to directories in a file system and "streams" similar to files in a file system. In FIG. 3, rectangular boxes represent streams and ovals represent storage. Before describing the transform metadata 210 of the present invention, note that streams 204-208 (shown in FIG. 2) are shown below the root 302 in this exemplary layer. Defining streams under the root is a common technique for compound file formats.

본 발명이 제공하는 변환 메타데이터(210)가 이제 보다 상세히 논의된다. 루트(302)에서 파생된 "\006DataSpaces"(310)라는 명칭의 전용 스토리지가 변환 메타데이터(210)를 저장한다. \006DataSpaces(310)는 DataSpaceMap 스트림(320), DataSpaceInfo 스토리지(330) 및 TransformInfo 스토리지(340)를 포함한다. 본 실시예에서, 전용 스토리지에 대하여 선택된 명칭 "\006DataSpaces"는 C 프로그래밍 언어의 문장으로 기입된다. 따라서, 본 실시예에서, 명칭은 단일 비-영숫자(non-alphanumeric) 토큰으로 시작되고 토큰 값은 6이다. 일반적으로, 전용 스토리지에 할당되는 명칭은 임의의 것으로 사용자의 구현에 의존한다.The transformation metadata 210 provided by the present invention is now discussed in more detail. Dedicated storage named "# 006DataSpaces" 310 derived from root 302 stores translation metadata 210. # 006DataSpaces 310 includes a DataSpaceMap stream 320, a DataSpaceInfo storage 330, and a TransformInfo storage 340. In the present embodiment, the name " 006DataSpaces " selected for the dedicated storage is written in the sentence of the C programming language. Thus, in this embodiment, the name begins with a single non-alphanumeric token and the token value is six. In general, the name assigned to dedicated storage is arbitrary and depends on the user's implementation.

DataSpaceMap 스트림(320)은 스트림[예를 들어, 스트림(204 - 208) 등]을 그 관련 데이터 스페이스와 맵핑시킨다. 일 실시예에서, DataSpaceMap 스트림(320)은 스트림 참조 컬럼(322)과 DataSpaceName 컬럼(324)을 갖는 테이블이다. 스트림 참조 컬럼(322) 내의 콘텐츠는 복합 문서 내에 저장된 스트림들[예를 들어, 스트림(204 - 208) 등] 중 어느 하나를 참조한다. DataSpaceName 내의 콘텐츠는 스트림 참조 컬럼(322) 내에서 확인된 관련 스트림에 대하여 정의된 특정 데이터 스페이스를 참조한다. 하나의 데이터 스페이스가 임의 갯수의 스트림과 관련되어도 좋다. 예를 들어, 도 3에 도시된 바와 같이, "DataSpaceName1"으로 식별되는 데이터 스페이스는 스트림 1(204) 및 스트림 2(206)과 관련된다. DataSpaceMap 스트림(320)에 대한 상기 설명은 DataSpaceMap 스트림(320)을 테이블로서 설명하지만, 당업자라면 다른 데이터 포맷들이 사용되어 스트림을 확인하고 데이터 스페이스와 상관시킬 수 있다는 것을 이해할 것이다.DataSpaceMap stream 320 maps a stream (eg, streams 204-208, etc.) with its associated data space. In one embodiment, DataSpaceMap stream 320 is a table with stream reference column 322 and DataSpaceName column 324. The content in the stream reference column 322 refers to any of the streams stored in the compound document (eg, streams 204-208, etc.). The content in DataSpaceName refers to a specific data space defined for the associated stream identified in stream reference column 322. One data space may be associated with any number of streams. For example, as shown in FIG. 3, the data space identified by “DataSpaceName1” is associated with stream 1 204 and stream 2 206. Although the above description of DataSpaceMap stream 320 describes DataSpaceMap stream 320 as a table, those skilled in the art will appreciate that other data formats may be used to identify and correlate the stream with the data space.

DataSpaceInfo 스토리지(330)는 하나 이상의 DataSpaceName 스트림[예를 들어, DataSpaceName 스트림(332 및 334)]을 포함한다. 상술된 실시예에서, DataSpaceName 스트림은 표준 복합-파일 쇼트 네임 규약(standard, compound-file short name conventions)에 따라 명명된다. 각각의 DataSpaceName 스트림(332 및 334)는 개별 DataSpaceName 스트림(332 및 334)과 관련되는 변환 목록(336)을 확인한다. 일 실시예에서, DataSpaceName(332 및 334) 각각은 데이터 스페이스를 구성하는 변환의 순서화된 목록일 수 있다. 변환이 적층되기 때문에, 목록(336) 내에 서의 순서는 중요하다. 일 실시예에서, 목록(336) 내의 최초 변환(337)은 "bottom" 변환으로서 참조되는데, 이는 변환(337)이 하부 데이터 스트림[예를 들어, 스트림(204) 등]에서의 비트에 가장 가깝다는 것을 의미한다. 목록(336) 내의 최종 변환(339)은 "top" 변환으로서 참조되는데, 이는 변환(339)이 데이터의 소비자/생성자(예를 들어, 애플리케이션 등)에게 가장 가깝다는 것을 의미한다. 도 4와 관련하여 이하 상세히 설명되듯이, 목록(336)에서 특정된 순서는 변환을 통한 데이터의 흐름을 결정한다.DataSpaceInfo storage 330 includes one or more DataSpaceName streams (eg, DataSpaceName streams 332 and 334). In the embodiment described above, the DataSpaceName stream is named according to standard, compound-file short name conventions. Each DataSpaceName stream 332 and 334 identifies a translation list 336 associated with the individual DataSpaceName streams 332 and 334. In one embodiment, each of DataSpaceNames 332 and 334 may be an ordered list of transformations that make up the data space. Because the transforms are stacked, the order in the list 336 is important. In one embodiment, the first transform 337 in the list 336 is referred to as a "bottom" transform, which transform 337 is closest to the bits in the underlying data stream (eg, stream 204, etc.). Means that. The final transform 339 in the list 336 is referred to as the "top" transform, which means that the transform 339 is closest to the consumer / generator of the data (eg, application, etc.). As described in detail below with respect to FIG. 4, the order specified in the list 336 determines the flow of data through the transformation.

Transforminfo 스토리지(340)는 하나 이상의 TransformInstance 스토리지[예를 들어, TransformInstance 스토리지(342, 344 및 346) 등]를 포함한다. 일 실시예에서, 이들 서브스토리지의 명칭은 변환의 명칭이다. 각각의 TransformInstance 스토리지(342, 344 및 346) 내에는, "\006Primary"이라는 명칭의 스트림(350)이 적어도 하나 존재한다. \006Primary 스트림(350)은 TransformClass Type(354) 및 TransformClass Name(356) 등 특정 변환에 대해 관계 있는 정보를 포함한다. TransformClass Type(354)는 특수 변환[예를 들어, LZ 압축, DRM(Digital Rights Management) 보호 등]을 구현하는 특수 변환 클래스를 나타낸다. 일 실시예에서, TransformClass Name(356)은 변환의 클래스(예를 들어, 타입 등)를 고유하게 식별하는 스트링으로서 특정된다. 클래스를 식별하는 스트링은 변환을 구현하는 클래스에 대한 클래스 명칭일 수 있다. TransformClass Type(354)는 TransformClass Name(356)에 특정된 스트링을 해석하는 방법을 말해주는 타입 표시기를 특정한다. \006Primary 스트림(350)은 또한 TransformInstance Data(358)에 대한 스페이스를 포함할 수 있다. TransformInstance Data(358)는 TransformClass Name(356) 및 TransformClass Type(354)에 의해 특정되는 변환에 특정된 정보를 저장한다. 예를 들어, 변환이 압축 변환이면, TransforInstanceData(358)는 윈도우 사이즈 등을 포함할 수 있다.Transforminfo storage 340 includes one or more TransformInstance storage (eg, TransformInstance storage 342, 344, 346, etc.). In one embodiment, the names of these substorages are the names of the transformations. Within each TransformInstance storage 342, 344, and 346, there is at least one stream 350 named "# 006Primary". # 006Primary stream 350 includes information related to a particular transform, such as TransformClass Type 354 and TransformClass Name 356. TransformClass Type 354 represents a special transform class that implements special transforms (eg, LZ compression, Digital Rights Management (DRM) protection, etc.). In one embodiment, TransformClass Name 356 is specified as a string that uniquely identifies the class of transform (eg, type, etc.). The string identifying the class may be a class name for the class implementing the transformation. TransformClass Type 354 specifies a type indicator that tells how to interpret the string specified in TransformClass Name 356. # 006Primary stream 350 may also include space for TransformInstance Data 358. TransformInstance Data 358 stores information specific to the transformation specified by TransformClass Name 356 and TransformClass Type 354. For example, if the transform is a compressed transform, the TransforInstanceData 358 may include a window size or the like.

일부 변환에 대하여, TransformInstance Data(358)는 필요한 정보를 저장하기 위한 충분한 스페이스를 허용하지 않을 수 있다. 따라서, 보다 세밀하게, 본 발명은 변환이 부가적인 정보를 TransformInstanceData 스트림[예를 들어, TransformInstance Data stream(370) 등]에 저장할 수 있게 한다. 이는 \006Primary 스트림(350)과 명칭 충돌이 없는 한 허용된다. TransformInstance Data의 본질은 변환 타입에 의존하여 변동할 것이다.For some transforms, TransformInstance Data 358 may not allow enough space to store the necessary information. Thus, more precisely, the present invention allows a transform to store additional information in a TransformInstanceData stream (eg, TransformInstance Data stream 370, etc.). This is allowed as long as there is no name conflict with # 006Primary stream 350. The nature of TransformInstance Data will vary depending on the transform type.

상술한 트리 계층은 변환된 데이터를 그 변환 정보와 함께 저장하기 위한 문서 포맷의 일 실시예를 설명하는 것이지만, 당업자라면 본 발명의 동작에 영향을 주지 않고도 상기 계층이 변경될 수 있다는 것을 이해할 것이다. 따라서, 변환 정보가 변환된 데이터와 함께 저장되는 트리 계층은 모두 본 발명을 벗어나는 것이 아니다. 도 4는 본 발명에 따라 변환된 데이터를 갖는 문서들을 포맷하기 위한 메커니즘이 사용되는 변환 프로세스의 그래픽 표현이다. 본 예시적인 변환 프로세스에서, 애플리케이션(400)은 도 2에 도시된 멀티-파트 파일(202)에 대한 판독 및 기입을 시도한다. 일반적으로, 변환 클래스의 각 인스턴스는 입력으로서 IStream을 취하고, 인코드된(예를 들어, 변환된) 데이터를 다른 IStream 인터페이스에 출력한다. 변환[예를 들어, 변환(420 및 422) 등]은 등록되고, OLE 복합 문서가 제공하 는 애플리케이션 프로그래밍 인터페이스를 통하는 등 스트림(206) 관련된 데이터 스페이스는 미리 특정된다. 예를 들어, 스트림(206)이 먼저 생성되었을 때, 멀티-파트 문서(202) 내에 스트림(206)을 생성하였던 애플리케이션이, 데이터에 어떠한 변환을 적용하여야 할지를 특정하는 것을 담당하였다. 이는 각각의 독립변수(argument)가 변환을 참조하는 독립변수 목록을 통해 발생하였을 수 있다.Although the tree hierarchy described above describes one embodiment of a document format for storing converted data with its conversion information, those skilled in the art will understand that the hierarchy may be modified without affecting the operation of the present invention. Accordingly, the tree hierarchy in which the conversion information is stored together with the converted data does not all depart from the present invention. 4 is a graphical representation of a conversion process in which a mechanism for formatting documents with converted data is used in accordance with the present invention. In this example conversion process, the application 400 attempts to read and write to the multi-part file 202 shown in FIG. In general, each instance of a transformation class takes an IStream as input, and outputs the encoded (eg, transformed) data to another IStream interface. The transformations (e.g., transformations 420 and 422, etc.) are registered and the data space associated with the stream 206 is pre-specified, such as via an application programming interface provided by the OLE compound document. For example, when stream 206 was first created, the application that created stream 206 in multi-part document 202 was responsible for specifying which transform to apply to the data. This may have occurred through an argument list, where each argument refers to a transformation.

판독 및 기입 액세스는 OS 레이어를 통한다. 과거에, 기입 동작은 IStream 인터페이스(414)를 통해 스트림 2(206)를 액세스하였을 것이다. 그러나, 본 발명에 따르면, IStream 인터페이스(414) 이전에 하나 이상의 변환이 삽입될 수 있다. 각각의 변환[예를 들어, 변환(420 및 422) 등]은 입력으로서 IStream 인터페이스[각각, IStream 인터페이스(410 및 412)]를 취하고, 그들의 인코드된(예를 들어, 변환된) 데이터를 다른 IStream 인터페이스[각각, IStream 인터페이스(412 및 414)]에 출력한다.Read and write access is through the OS layer. In the past, the write operation would have accessed stream 2 206 through IStream interface 414. However, in accordance with the present invention, one or more transforms may be inserted before the IStream interface 414. Each transform (e.g., transforms 420 and 422, etc.) takes an IStream interface (e.g., IStream interfaces 410 and 412, respectively) as input, and converts their encoded (e.g., converted) data to another. Output to the IStream interfaces (IStream interfaces 412 and 414, respectively).

이와 마찬가지로, 애플리케이션(400)이 멀티-파트 파일(202) 내의 스트림 2(206)를 판독하려고 하는 경우, 하나 이상의 역변환(inverse transform)[예를 들어, 역변환(450 및 452)]이 삽입될 수 있다. 역변환의 갯수는 데이터가 적절하게 디코드 되어 애플리케이션이 데이터를 이해할 수 있도록 변환의 갯수와 동일하다. 애플리케이션(400)과 스트림(206) 사이에 변환이 삽입되는 방식이 이제 도 5를 참조하여 설명된다.Similarly, if the application 400 attempts to read stream 2 206 in the multi-part file 202, one or more inverse transforms (eg, inverse transforms 450 and 452) may be inserted. have. The number of inverse transformations is equal to the number of transformations so that the data is properly decoded so that the application can understand the data. The manner in which the transform is inserted between the application 400 and the stream 206 is now described with reference to FIG. 5.

도 5는 본 발명에 따라, 복합 파일 내에 변환된 데이터를 액세스하는 프로세스를 일반적으로 도시하는 논리 흐름도이다. 프로세스(500)는 애플리케이션이 멀 티-파트 파일의 스트림 내의 데이터를 액세스하도록 요청하는 시작 블럭(501)에서 시작한다. 변환 정보(210)는 스트림에 대하여 이미 특정되었다.5 is a logic flow diagram generally illustrating the process of accessing converted data in a compound file, in accordance with the present invention. Process 500 begins at a start block 501 that requests an application to access data in a stream of a multi-part file. The transformation information 210 has already been specified for the stream.

판정 블럭에서는, 스트림에 데이터 스페이스의 멤버인지 여부에 대한 판정이 이루어진다. 도 3을 참조하면, 일 실시예에 대하여, 이러한 판정은 요청된 스트림을 확인하는 스트림 참조(322)에 대한 DataSpaceMap 내부를 검색하여 이루어진다. 스트림과 관련된 스트림 기준(322)이 발견되면, 스트림은 어떠한 변환도 정의하지 않고, 처리는 종료로 진행한다. 이러한 상황에서, 애플리케이션은 본 발명 이전에 행하여졌던 방식으로 데이터를 액세스한다. 그러나, 스트림 기준(322)이 DataSpaceMap 내에 포함되면, 처리는 블럭 504로 진행한다.In the decision block, a determination is made as to whether the stream is a member of a data space. Referring to FIG. 3, for one embodiment, this determination is made by searching inside the DataSpaceMap for stream reference 322 identifying the requested stream. If a stream criterion 322 associated with the stream is found, the stream does not define any conversion and processing proceeds to end. In this situation, the application accesses the data in the way that was done before the present invention. However, if stream criteria 322 is included in the DataSpaceMap, processing proceeds to block 504.

블럭 504에서는, 스트림 기준(322)과 관련된 DataSpaceName이 취득된다. DataSpaceName은 스트링 또는 임의의 기타 포맷일 수 있다.At block 504, a DataSpaceName associated with stream criteria 322 is obtained. DataSpaceName can be a string or any other format.

블럭 506에서는, 블럭 504에서 취득된 DataSpaceName을 사용하여, DataSpaceInfo 스토리지가 검색되어 DataSpaceMap 내에 확인된 DataSpaceName과 관련되는 DataSpaceName 스트림을 확인한다.In block 506, using the DataSpaceName obtained in block 504, the DataSpaceInfo storage is retrieved to identify the DataSpaceName stream associated with the DataSpaceName identified in the DataSpaceMap.

블럭 508에서는, 목록 내에서 부터의 변환이 확인된다. 액세스가 기입인지 또는 판독인지 여부에 의존하여, 변환은 데이터를 각각 인코드하거나 또는 디코드할 것이다. DataSpaceName 스트림은 각각의 변환을 특정 순서로 열거한다. 액세스가 기입인 경우, 순서는 'top'으로부터 'bottom'으로이다. 액세스가 판독인 경우, 순서는 'bottom'으로부터 'top'으로이다.At block 508, the transformation from within the list is confirmed. Depending on whether the access is write or read, the conversion will either encode or decode the data respectively. The DataSpaceName stream enumerates each transformation in a specific order. If the access is write, the order is from 'top' to 'bottom'. If the access is a read, the order is from 'bottom' to 'top'.

블럭 510에서는, 확인된 변환이 적용된다. 변환을 적용할 때, 변환 인스턴 스 데이터가 사용되어 데이터를 적절하게 변환한다. 액세스가 기입인 경우, 변환(인코드)이 적용된다. 액세스가 판독인 경우, 역변환(디코드)가 적용된다.At block 510, the identified transform is applied. When you apply a transformation, transformation instance data is used to transform the data appropriately. If the access is a write, a transform (encode) is applied. If the access is a read, inverse transform (decode) is applied.

판정 블럭 512에서는, 데이터 스페이스가 연쇄화된 변환을 더 포함하는지 여부에 대한 판정이 이루어진다. 이는 목록(336)이 변환 인스턴스를 더 참조하는지 여부를 검사하는 것에 의해 판정된다. 데이터 스페이스에서의 최종 변환이 적용되면, 최종 변환은 데이터를 출력하고, 프로세스는 종료한다. 그러나, 열거된 다른 변환이 존재하는 경우, 처리는 블럭 508로 되돌아가, 최종 변환이 적용될 때까지 상술한 처리를 진행한다.At decision block 512, a determination is made as to whether the data space further includes concatenated transformations. This is determined by checking whether the list 336 further references the transform instance. If a final transform in the data space is applied, the final transform outputs the data and the process ends. However, if there are other transforms listed, the process returns to block 508 and proceeds with the process described above until the final transform is applied.

또한, 당업자라면 프로세스(300)가 제공하는 기능이 여러 방식으로 구현될 수 있다는 것을 이해할 것이다. 예를 들어, 스트림 명칭으로부터 변환 목록으로 직접 맵핑하는 것(데이터 스페이스의 사용을 생략함)이 있을 것이다. 따라서, 본 발명은 스트림을 변환 정보로 맵핑하기 위한 이러한 및 다른 실시예들을 모두 포함한다. 프로세스(500)는 이러한 일 실시예를 나타낸다.In addition, those skilled in the art will appreciate that the functionality provided by process 300 may be implemented in a number of ways. For example, there might be a direct mapping from the stream name to the translation list (omitting the use of data spaces). Thus, the present invention encompasses both these and other embodiments for mapping a stream to transform information. Process 500 represents one such embodiment.

상술한 상세한 설명, 실시예 및 데이터는 본 발명 구성의 제조 및 사용에 대한 완벽한 설명을 제공한다. 본 발명의 많은 실시예가 본 발명의 사상 및 범위를 벗어나지 않고도 이루어질 수 있기 때문에, 본 발명은 이하 첨부된 청구의 범위에 귀속하게 된다.The above detailed description, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.

Claims (27)

컴퓨터로 구현되는 방법에 있어서,In a computer implemented method, 멀티-파트 파일 내의 스트림을 액세스하라는 요청을 수신하는 단계;Receiving a request to access a stream in a multi-part file; 상기 스트림과 관련된 적어도 하나의 변환 목록을 확인하는 단계- 상기 목록은 상기 멀티-파트 파일 내로부터(from within the multi-part file) 확인됨 -; 및Identifying at least one conversion list associated with the stream, the list being identified from within the multi-part file; And 상기 요청을 완료하기 이전에 데이터에 대하여 상기 변환 목록에서 특정된 변환을 수행하는 단계를 포함하는 방법.Performing a transformation specified in the transformation list on data prior to completing the request. 제1항에 있어서, 상기 멀티-파트 파일은 OLE(Object Linking and Embeddig) 복합 파일을 포함하는 방법.The method of claim 1, wherein the multi-part file comprises an Object Linking and Embeddig (OLE) composite file. 제1항에 있어서, 변환 목록을 확인하는 상기 단계는,The method of claim 1, wherein the step of checking the conversion list, 상기 스트림에 대한 데이터 스페이스 맵을 탐색하는 단계- 상기 데이터 스페이스 맵은 상기 스트림과; 및 상기 목록을 규정하는 데이터 스페이스와 관련되는 데이터 스페이스 명칭; 사이의 상관(correlation)을 제공함 -를 포함하는 방법.Searching for a data space map for the stream, the data space map comprising the stream; And a data space name associated with the data space defining the list. Providing a correlation between. 제1항에 있어서, 적어도 하나의 변환에 대한 상기 목록은 열거된 각각의 변환에 대한 타입과 명칭을 포함하는 방법.The method of claim 1, wherein the list for at least one transformation comprises a type and a name for each transformation listed. 제1항에 있어서, 상기 목록은 상기 목록에서 확인된 변환들 중 하나에 대한 변환 인스턴스 데이터를 더 포함하고, 상기 변환 인스턴스 데이터는 상기 하나의 변환에 의해 변환된 데이터를 디코드하는 것과 관계된 정보를 특정하는 방법.The method of claim 1, wherein the list further comprises transform instance data for one of the transforms identified in the list, wherein the transform instance data specifies information related to decoding the data transformed by the one transform. How to. 제1항에 있어서, 상기 요청은 데이터 청크(data chunk)의 기입 요청이고, 상기 적어도 하나의 변환은 상기 데이터 청크에 대하여 수행되어, 스토리지 매체에 기입되는 인코드된 데이터를 생성하는 방법.The method of claim 1, wherein the request is a write request of a data chunk and the at least one conversion is performed on the data chunk to generate encoded data written to a storage medium. 제6항에 있어서, 상기 데이터 청크는 상기 스트림에 대해 상기 스토리지 매체에 미리 기입된 다른 데이터 청크들과 불연속적인 방법.7. The method of claim 6, wherein the data chunk is discontinuous with other data chunks previously written to the storage medium for the stream. 제6항에 있어서, 상기 데이터 청크는 상기 스트림에 대한 다른 데이터 청크들에 비해 사이즈가 일정하게 된 청크인 방법.7. The method of claim 6 wherein the data chunk is a chunk that has a constant size compared to other data chunks for the stream. 제1항에 있어서, 상기 목록은 압축 변환 및 암호화 변환을 포함하는 방법.The method of claim 1, wherein the list comprises a compression transform and an encryption transform. 제1항에 있어서, 상기 요청은 데이터 청크의 판독 요청이고, 상기 적어도 하나의 변환은 상기 스트림으로부터 검색된 데이터 청크에 대한 역변환을 수행하여 요청자에게 디코드된 데이터를 제공하는 방법.The method of claim 1, wherein the request is a read request of a data chunk and the at least one transform performs an inverse transform on the data chunk retrieved from the stream to provide decoded data to the requester. 멀티-파트 파일들에 변환을 적용하기 위한 메커니즘을 포함하는 컴퓨터 시스템에 있어서,A computer system comprising a mechanism for applying a transform to multi-part files, the computer system comprising: 프로세서 및 메모리를 포함하고,Includes a processor and memory, 상기 메모리는 상기 프로세서에 의한 실행을 위해 상기 메모리로 로드되는 복수의 컴퓨터-실행가능 명령어들을 위해 할당되며, The memory is allocated for a plurality of computer-executable instructions loaded into the memory for execution by the processor, 상기 컴퓨터-실행가능 명령어들은,The computer-executable instructions are 멀티-파트 파일 내의 스트림을 액세스하라는 요청을 수신하는 단계;Receiving a request to access a stream in a multi-part file; 상기 스트림과 관련된 적어도 하나의 변환 목록을 확인하는 단계- 상기 목록은 상기 멀티-파트 파일 내로부터(from within the multi-part file) 확인됨 -; 및Identifying at least one conversion list associated with the stream, the list being identified from within the multi-part file; And 상기 요청을 완료하기 이전에 데이터에 대하여 상기 변환 목록에서 특정된 변환을 수행하는 단계를 포함하는 방법을 수행하는 컴퓨터 시스템.Performing a transformation specified in the transformation list on data prior to completing the request. 제11항에 있어서, 상기 멀티-파트 파일은 OLE(Object Linking and Embeddig) 복합 파일을 포함하는 컴퓨터 시스템.12. The computer system of claim 11 wherein the multi-part file comprises an Object Linking and Embeddig (OLE) composite file. 제11항에 있어서, 변환 목록을 확인하는 상기 단계는,The method of claim 11, wherein the step of checking the conversion list, 상기 스트림에 대한 데이터 스페이스 맵을 탐색하는 단계- 상기 데이터 스페이스 맵은 상기 스트림과; 및 상기 목록을 규정하는 데이터 스페이스와 관련되는 데이터 스페이스 명칭; 사이의 상관(correlation)을 제공함 -를 포함하는 컴퓨터 시스템.Searching for a data space map for the stream, the data space map comprising the stream; And a data space name associated with the data space defining the list. Providing a correlation between. 제11항에 있어서, 적어도 하나의 변환에 대한 상기 목록은 열거된 각각의 변환에 대한 타입과 명칭을 포함하는 컴퓨터 시스템.12. The computer system of claim 11 wherein the list of at least one transformation comprises a type and a name for each transformation listed. 제11항에 있어서, 상기 목록은 상기 목록에서 확인된 변환들 중 하나에 대한 변환 인스턴스 데이터를 더 포함하고, 상기 변환 인스턴스 데이터는 상기 하나의 변환에 의해 변환된 데이터를 디코드하는 것과 관계된 정보를 특정하는 컴퓨터 시스템.12. The system of claim 11, wherein the list further comprises transform instance data for one of the transforms identified in the list, wherein the transform instance data specifies information related to decoding the data transformed by the one transform. Computer system. 제11항에 있어서, 상기 요청은 데이터 청크(data chunk)의 기입 요청이고, 상기 적어도 하나의 변환은 상기 데이터 청크에 대하여 수행되어, 스토리지 매체에 기입되는 인코드된 데이터를 생성하는 컴퓨터 시스템.12. The computer system of claim 11 wherein the request is a write request of a data chunk and the at least one conversion is performed on the data chunk to produce encoded data written to a storage medium. 제16항에 있어서, 상기 데이터 청크는 상기 스트림에 대해 상기 스토리지 매체에 미리 기입된 다른 데이터 청크들과 불연속적인 방법.17. The method of claim 16, wherein the data chunk is discontinuous with other data chunks previously written to the storage medium for the stream. 제16항에 있어서, 상기 데이터 청크는 상기 스트림에 대한 다른 데이터 청크들에 비해 사이즈가 일정하게 된 청크인 방법.17. The method of claim 16 wherein the data chunk is a chunk that has a constant size relative to other data chunks for the stream. 제1항에 있어서, 상기 목록은 압축 변환 및 암호화 변환을 포함하는 방법.The method of claim 1, wherein the list comprises a compression transform and an encryption transform. 제11항에 있어서, 상기 요청은 데이터 청크의 판독 요청이고, 상기 적어도 하나의 변환은 상기 스트림으로부터 검색된 데이터 청크에 대한 역변환을 수행하여 요청자에게 디코드된 데이터를 제공하는 방법.12. The method of claim 11, wherein the request is a read request for a data chunk and the at least one transform performs an inverse transform on the data chunk retrieved from the stream to provide decoded data to the requester. 데이터 구조로 인코드된 컴퓨터-판독가능 매체에 있어서,In a computer-readable medium encoded with a data structure, 멀티-파트 파일 내의 스트림을 변환 목록에 대한 명칭과 상관시키는 맵을 포함하는 제1 스트림;A first stream comprising a map correlating a stream in the multi-part file with a name for a translation list; 상기 스트림에 대한 각각의 변환을 열거하는 제2 스트림; 및A second stream enumerating each transform for the stream; And 상기 각각의 변환에 대한 것으로, 상기 변환과 관련되는 정보를 확인하는 제3 스트림을 포함하는 컴퓨터-판독가능 매체.And a third stream for each of said transforms, said third stream identifying information related to said transform. 제21항에 있어서, 상기 데이터 구조는 상기 멀티-파트 파일 내에 포함되는 컴퓨터-판독가능 매체.23. The computer-readable medium of claim 21, wherein the data structure is included in the multi-part file. 제21항에 있어서, 상기 변환 목록에 대한 명칭은 상기 멀티-파트 파일 내의 다수의 스트림과 상관될 수 있는 컴퓨터-판독가능 매체.22. The computer-readable medium of claim 21, wherein a name for the translation list may be correlated with multiple streams in the multi-part file. 제21항에 있어서, 상기 변환 목록은 순서에 의존하는 컴퓨터-판독가능 매체.22. The computer-readable medium of claim 21, wherein the translation list is dependent on order. 제21항에 있어서, 상기 정보는 상기 변환에 대한 클래스 명칭 및 클래스 타입을 확인하는 컴퓨터-판독가능 매체.The computer-readable medium of claim 21, wherein the information identifies a class name and a class type for the transformation. 제25항에 있어서, 상기 정보는 또한 상기 변환과 관련되는 인스턴스 데이터를 확인하는 컴퓨터-판독가능 매체.27. The computer-readable medium of claim 25, wherein the information also identifies instance data associated with the transformation. 제26항에 있어서, 상기 변환은 압축 변환을 포함하고, 상기 인스턴스 데이터는 상기 압축 변환에 대한 윈도우 사이즈를 포함하는 컴퓨터-판독가능 매체.27. The computer-readable medium of claim 26, wherein the transformation comprises a compression transformation and the instance data comprises a window size for the compression transformation.
KR1020047010758A 2003-05-17 2003-05-17 Mechanism for applying transforms to multi-part files KR100965709B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2003/015707 WO2004107198A1 (en) 2003-05-17 2003-05-17 Mechanism for applying transorms to multi-part files

Publications (2)

Publication Number Publication Date
KR20060037217A true KR20060037217A (en) 2006-05-03
KR100965709B1 KR100965709B1 (en) 2010-06-24

Family

ID=33449011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010758A KR100965709B1 (en) 2003-05-17 2003-05-17 Mechanism for applying transforms to multi-part files

Country Status (9)

Country Link
EP (1) EP1625510A4 (en)
JP (1) JP4378342B2 (en)
KR (1) KR100965709B1 (en)
CN (1) CN100430916C (en)
AU (1) AU2003241506B8 (en)
BR (1) BR0306999A (en)
CA (1) CA2470720C (en)
MX (1) MXPA04007407A (en)
WO (1) WO2004107198A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007139552A1 (en) * 2006-05-31 2007-12-06 Citrix Systems, Inc. Systems and methods for determining the charset encoding for decoding a request submission in a gateway
US8255373B2 (en) 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US9996572B2 (en) 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8886796B2 (en) 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
CN108337208B (en) * 2017-01-19 2020-11-24 中国电信股份有限公司 Data protection method and replacement device based on cloud storage and cloud storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8901827A (en) * 1989-07-14 1991-02-01 Oce Nederland Bv SYSTEM FOR PROCESSING FILE ORGANIZED DATA, MANAGEMENT MODULE USED THEREIN AND STORAGE MEDIA, PROVIDED WITH THE PROGRAMMING OF THIS MANAGEMENT MODULE.
JP3308770B2 (en) * 1994-07-22 2002-07-29 三菱電機株式会社 Information processing apparatus and calculation method in information processing apparatus
US5742818A (en) * 1995-12-15 1998-04-21 Microsoft Corporation Method and system of converting data from a source file system to a target file system
US6339775B1 (en) * 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US20020001412A1 (en) * 1998-07-21 2002-01-03 Hewlett-Packard Company System for variable quantization in jpeg for compound documents
US6357042B2 (en) * 1998-09-16 2002-03-12 Anand Srinivasan Method and apparatus for multiplexing separately-authored metadata for insertion into a video data stream
SE513356C2 (en) * 1998-11-20 2000-08-28 Ericsson Telefon Ab L M Method and apparatus for encrypting images
US7644366B1 (en) * 1999-07-30 2010-01-05 Computer Associates Think, Inc. Method and system for displaying a plurality of discrete files in a compound file
US6529948B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Multi-object fetch component
US20020003886A1 (en) * 2000-04-28 2002-01-10 Hillegass James C. Method and system for storing multiple media tracks in a single, multiply encrypted computer file
EP1189432A3 (en) * 2000-08-14 2004-10-20 Matsushita Electric Industrial Co., Ltd. A hierarchical encryption scheme for secure distribution of predetermined content

Also Published As

Publication number Publication date
AU2003241506B2 (en) 2009-11-26
JP4378342B2 (en) 2009-12-02
AU2003241506B8 (en) 2010-01-07
EP1625510A4 (en) 2008-03-12
AU2003241506A1 (en) 2005-01-21
BR0306999A (en) 2005-02-09
CN1615477A (en) 2005-05-11
JP2006526191A (en) 2006-11-16
CA2470720A1 (en) 2004-11-17
CA2470720C (en) 2011-10-18
MXPA04007407A (en) 2005-02-17
KR100965709B1 (en) 2010-06-24
EP1625510A1 (en) 2006-02-15
WO2004107198A1 (en) 2004-12-09
CN100430916C (en) 2008-11-05

Similar Documents

Publication Publication Date Title
US11016932B2 (en) Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
US7188118B2 (en) System and method for detecting file content similarity within a file system
US9678879B2 (en) Set partitioning for encoding file system allocation metadata
EP2941723B1 (en) Compression and deduplication layered driver
JP6352308B2 (en) Method and system for storing and retrieving data
US7496586B1 (en) Method and apparatus for compressing data in a file system
US7523221B2 (en) Mechanism for applying transforms to multi-part files
US7716445B2 (en) Method and system for storing a sparse file using fill counts
US20080228770A1 (en) Method for Performing Recoverable Live Context Migration in a Stacked File System
US10726147B2 (en) File encryption support for FAT file systems
TW200408980A (en) System and method for managing file names for file system filter drivers
US20070124302A1 (en) Mapping a Source File From a Source System To a Target System
US20110271064A1 (en) Storage device and method for accessing the same
KR100965709B1 (en) Mechanism for applying transforms to multi-part files
JP2005108239A (en) Storage system for storing data in hierarchical data structure
RU2348069C2 (en) Mechanism of modification application to files consisting of multiple parts
CN105243090A (en) Exclusive file acquisition method and system
US7603568B1 (en) Method and apparatus for self-validating checksums in a file system
Kowalczyk Curating Digital Cultural Heritage Materials
CN113901146A (en) Computer data safety protection method and device based on artificial intelligence and electronic equipment
KR20200116309A (en) A file processing apparatus based on a shared file system
Wirth et al. Sequential input and output
JP2011215784A (en) Database management device, export method and program, and import method and program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130521

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140516

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 9