IStorage
IStorage 接口支持结构化存储对象的创建和管理。 结构化存储允许分层存储在单个文件的信息,和通常被称为“文件系统内文件”。 元素的结构化存储对象存储和小溪。 存储类似于目录,和流类似于文件。 在一个结构化的存储将会有一个可能包含substorages主存储对象,可能是嵌套的,和小溪。 存储提供对象的结构,包含数据流,通过操纵 IStream 接口。
的 IStorage 接口提供了创建和管理方法根存储对象,孩子存储对象,和流对象。 这些方法可以创建、开放、枚举、移动、复制、重命名或删除元素存储对象。
应用程序必须释放它 IStorage 指针完成时所使用的存储对象来释放内存。 也有一些方法来改变一个元素的日期和时间。
有许多不同的模式的一个存储对象及其元素可以打开,通过设置值决定 STGM常量 。 这就是变化的一个方面。 你可以设置直接模式,改变一个对象会立即写,或交易模式,更改写入缓冲区,直到明确承诺。 的IStorage 接口提供了方法提交更改,并恢复到最后一次提交的版本。 例如,可以在只读模式下打开一个流或读/写模式。 有关更多信息,请参见 STGM常量 。
其他方法提供的信息通过一个存储对象及其元素 STATSTG 结构。
什么时候实现
一般来说,你不会实现这个接口,除非你是定义一个新的存储系统方案。 COM提供了一个复合文件的实现 IStorage 界面,支持事务访问。 COM提供了一组helper api来促进使用复合文件存储对象的实现。 有关更多信息,请参见 IStorage -复合文件实现。
什么时候使用
调用的方法 IStorage 在当前的存储管理substorages或流。 这种管理包括创建、打开或破坏substorages流,以及管理等方面的时间邮票,名称,等等。 你也可以提交修改或恢复到以前的版本存储在交易模式下打开。 的方法 IStorage 不包括意味着读写蠕升是预留给 IStream 管理实际的数据。 而 IStorage 和 IStream 接口是用来操作存储对象和它的元素, IPersistStorage 接口包含方法称为序列化存储对象及其元素到磁盘上的一个文件里。
成员
的 IStorage 接口继承自 IUnknown 接口。 IStorage 也有这些类型的成员:
方法
的 IStorage 接口有这些方法。
方法 | 描述 |
---|---|
提交 |
反映了变化的事务存储对象到父级。 |
CopyTo |
这个开放存储对象的全部内容复制到另一个存储对象。 目的地存储对象的布局可能有所不同。 |
CreateStorage |
创建并打开一个新的存储对象在这个存储对象。 名称长度不能超过31个字符(不包括字符串结束符)。 01年至000 f的人物,作为第一个字符流/存储的名称,使用OLE保留。 这是一个复合文件的限制,而不是一个结构化的存储限制。 |
CreateStream |
创建和打开一个流对象与指定名称包含在这个存储对象。 名称长度不能超过31个字符(不包括字符串结束符)。 01年至000 f的人物,作为第一个字符流/存储的名称,使用OLE保留。 这是一个复合文件的限制,而不是一个结构化的存储限制。 |
DestroyElement |
删除指定的存储或流从存储对象。 |
EnumElements |
返回一个枚举器对象,可用于枚举的存储和流对象包含在这个存储对象。 |
MoveElementTo |
复制或移动substorage或从存储对象流到另一个存储对象。 |
OpenStorage |
打开一个现有的存储对象与指定名称根据指定的访问模式。 名称长度不能超过31个字符(不包括字符串结束符)。 01年至000 f的人物,作为第一个字符流/存储的名称,使用OLE保留。 这是一个复合文件的限制,而不是一个结构化的存储限制。 |
OpenStream |
打开一个现有的流对象在这个存储对象使用指定的访问权限 grfMode 。 名称长度不能超过31个字符(不包括字符串结束符)。 01年至000 f的人物,作为第一个字符流/存储的名称,使用OLE保留。 这是一个复合文件的限制,而不是一个结构化的存储限制。 |
RenameElement |
重命名指定存储或流在这个存储对象。 |
回复 |
已经丢弃的所有更改存储对象自上次提交操作。 |
SetClass |
分配指定的CLSID存储对象。 |
SetElementTimes |
设置修改、访问和创建时间的显示存储元素,如果底层文件系统的支持。 |
SetStateBits |
32位的状态信息存储在这个存储对象。 |
统计 |
返回 STATSTG 结构的开放存储对象。 |
需求
最低支持客户 |
Windows 2000专业(桌面应用| Windows存储应用程序) |
---|---|
最低支持服务器 |
Windows 2000 Server(桌面应用| Windows存储应用程序) |
Header |
|
IDL |
|
Library |
|
DLL |
|
IID |
IID_IStorage is defined as 0000000B-0000-0000-C000-000000000046 |
See also
The IStorage interface supports the creation and management of structured storage objects. Structured storage allows hierarchical storage of information within a single file, and is often referred to as "a file system within a file". Elements of a structured storage object are storages and streams. Storages are analogous to directories, and streams are analogous to files. Within a structured storage there will be a primary storage object that may contain substorages, possibly nested, and streams. Storages provide the structure of the object, and streams contain the data, which is manipulated through the IStream interface.
The IStorage interface provides methods for creating and managing the root storage object, child storage objects, and stream objects. These methods can create, open, enumerate, move, copy, rename, or delete the elements in the storage object.
An application must release its IStorage pointers when it is done with the storage object to deallocate memory used. There are also methods for changing the date and time of an element.
There are a number of different modes in which a storage object and its elements can be opened, determined by setting values from STGM Constants. One aspect of this is how changes are committed. You can set direct mode, in which changes to an object are immediately written to it, or transacted mode, in which changes are written to a buffer until explicitly committed. The IStorage interface provides methods for committing changes and reverting to the last-committed version. For example, a stream can be opened in read-only mode or read/write mode. For more information, see STGM Constants.
Other methods provide access to information about a storage object and its elements through the STATSTG structure.
When to implement
Generally, you would not implement this interface unless you were defining a new storage scheme for your system. COM provides a compound file implementation of the IStorage interface that supports transacted access. COM provides a set of helper APIs to facilitate using the compound file implementation of storage objects. For more information, see IStorage - Compound File Implementation.
When to use
Call the methods of IStorage to manage substorages or streams within the current storage. This management includes creating, opening, or destroying substorages or streams, as well as managing aspects such as time stamps, names, and so forth. You also can commit changes or revert to previous version for storages opened in transacted mode. The methods of IStorage do not include means to read and write data—this is reserved for IStream, which manages the actual data. While the IStorage and IStream interfaces are used to manipulate the storage object and its elements, the IPersistStorage interface contains methods that are called to serialize the storage object and its elements to a disk file.
Members
The IStorage interface inherits from the IUnknown interface. IStorage also has these types of members:
Methods
The IStorage interface has these methods.
Method | Description |
---|---|
Commit |
Reflects changes for a transacted storage object to the parent level. |
CopyTo |
Copies the entire contents of this open storage object into another storage object. The layout of the destination storage object may differ. |
CreateStorage |
Creates and opens a new storage object within this storage object. The name must not exceed 31 characters in length (not including the string terminator). The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction. |
CreateStream |
Creates and opens a stream object with the specified name contained in this storage object. The name must not exceed 31 characters in length (not including the string terminator). The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction. |
DestroyElement |
Removes the specified storage or stream from this storage object. |
EnumElements |
Returns an enumerator object that can be used to enumerate the storage and stream objects contained within this storage object. |
MoveElementTo |
Copies or moves a substorage or stream from this storage object to another storage object. |
OpenStorage |
Opens an existing storage object with the specified name according to the specified access mode. The name must not exceed 31 characters in length (not including the string terminator). The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction. |
OpenStream |
Opens an existing stream object within this storage object using the specified access permissions in grfMode. The name must not exceed 31 characters in length (not including the string terminator). The 000 through 01f characters, serving as the first character of the stream/storage name, are reserved for use by OLE. This is a compound file restriction, not a structured storage restriction. |
RenameElement |
Renames the specified storage or stream in this storage object. |
Revert |
Discards all changes that have been made to the storage object since the last commit operation. |
SetClass |
Assigns the specified CLSID to this storage object. |
SetElementTimes |
Sets the modification, access, and creation times of the indicated storage element, if supported by the underlying file system. |
SetStateBits |
Stores up to 32 bits of state information in this storage object. |
Stat |
Returns the STATSTG structure for this open storage object. |
Requirements
Minimum supported client |
Windows 2000 Professional [desktop apps | Windows Store apps] |
---|---|
Minimum supported server |
Windows 2000 Server [desktop apps | Windows Store apps] |
Header |
|
IDL |
|
Library |
|
DLL |
|
IID |
IID_IStorage is defined as 0000000B-0000-0000-C000-000000000046 |
See also
IStorage的更多相关文章
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- COM 组件基础——GUID 和 接口
一.前言 书接上回,话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时 ...
- Day 1:学习Windows Phone 使用 SQLite
private void move(string fn) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(fn, Uri ...
- [.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
一.引言 前面介绍的所有专题都是基于经典的领域驱动实现的,然而,领域驱动除了经典的实现外,还可以基于CQRS模式来进行实现.本专题将全面剖析如何基于CQRS模式(Command Query Respo ...
- NET RichTextBox控件如何可以插入图像
本文介绍.NET RichTextBox控件如何可以插入图像,控制和ActiveX对象通过使用OLE方式,如在解释,.不幸的是,它涵盖了只用一个C源代码样本,所以我需要在托管代码(C#)实施类似的解决 ...
- GETOBJECTOPTIONS
/// <summary> /// 获取对象的选项 /// </summary> public enum GETOBJECTOPTIONS { /// <summary& ...
- StgCreateDocfileOnILockBytes复合文档
CRichEditCtrl 的ole技术 ------------ IRichEditOle --------------------------- 如需向CRichEditCtrl里面插入Ole对象 ...
- REOBJECT 结构
REOBJECT 结构 包含有关 rich edit 控件中的 OLE 或图像对象的信息. 语法 typedef struct _reobject { DWORD cbStru ...
- com学习(一)GUID 和 接口
话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 E ...
随机推荐
- Map占用内存大小评估
public class test { private static java.util.HashMap<String, String> needQueryResProductList = ...
- String、ANSIString、PChar及TBytes之间的转换 BytesOf move stringof
一.string转为ansistring 1.直接赋值 (有警告)2.ansistring()类型强制转换.(无警告) 二.ansistring 转为string 1.直接赋值 (有警告)2.stri ...
- virgo-tomcat没有任务错误日志的停掉的解决办法
最近virgo-tomcat总是无缘无故的down掉,用了下面的几种方法来解决这个问题,具体哪个方法生效了,目前还不清楚...1. 删掉了home/logs下面的很大的日志文件 2. 在.bash_p ...
- 用JDBC操作MySQL——获取表的大小
JDBC中获取MySQL我们有时需要获得表的大小,这包括了表的行数和列数,我们可以分别用以下的方法得到: 假设我们得到了一个ResultSet对象rs,则操作如下: 读取结果集前获取行数: rs.la ...
- Codeforces #447 Div2 E
#447 Div2 E 题意 给出一个由有向边构成的图,每条边上有蘑菇,假设有 \(n\) 个蘑菇,那么第一次走过这条边可以获得 \(n\) 个蘑菇,第二次 \(n-1\),第三次 \(n-1-2\) ...
- 【记忆化搜索】bzoj1055 [HAOI2008]玩具取名
f(l,r,c)表示sl...sr能否被合成字符c. #include<cstdio> #include<cstring> using namespace std; int m ...
- 【模拟】bzoj2295 【POJ Challenge】我爱你啊
#include<cstdio> #include<cstring> using namespace std; int n; char s[100001],table[]=&q ...
- [美团 CodeM 初赛 Round A]数列互质
题目大意: 给出一个长度为n的数列a1,a2,a3,...,an,以及m组询问(li,ri,ki),求区间[li,ri]中有多少数在该区间中的出现次数与ki互质. 思路: 莫队. f[i]记录数字i出 ...
- [Interview]读懂面试问题,在面试官面前变被动为主动
面试是供需双方心理的较量,作为求职者来说,了解对方问题的内涵,做到“明明白白他的心”,就能变被动为主动.因此,读懂面试问题,掌握面试考官的提问的目的,有准备.有针对性地回答,对提高应聘的成功率是有很大 ...
- yum出现的“UnicodeDecodeError: 'ascii' codec”问题解决
新装了CentOS 6.5系统,打算使用yum安装程序是出现了如下错误: Loading mirror speeds from cached hostfile Traceback (most rece ...