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

Objidl.h

IDL

Objidl.idl

Library

Uuid.lib

DLL

Ole32.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

Objidl.h

IDL

Objidl.idl

Library

Uuid.lib

DLL

Ole32.dll

IID


IID_IStorage is defined as 0000000B-0000-0000-C000-000000000046

See also

时间: 2024-10-13 03:03:41

IStorage的相关文章

REOBJECT structure

包含丰富编辑控件中的OLE或图像对象的信息. Syntax 语法 typedef struct _reobject { DWORD cbStruct; LONG cp; CLSID clsid; LPOLEOBJECT poleobj; LPSTORAGE pstg; LPOLECLIENTSITE polesite; SIZEL sizel; DWORD dvaspect; DWORD dwFlags; DWORD dwUser; } REOBJECT; Members cbStruct Ty

【转载】COM 组件设计与应用(十七)——持续性

原文:http://vckbase.com/index.php/wv/1264.html 一.前言 我们写程序,经常需要实现这样的需求: 例一.程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置,以便下次运行时保持位置不变: 例二.由于程序运行时间很长,今天执行一部分,明天继续执行.那么在下次运行前要恢复前次的状态: ... ... ... ... 智慧的老师:以上这些需求,如何实现呢? 懵懂的学生:这个简单,只要在程序退出前提取必要的信息保存到文件中,下次运行时再从文件中读出来,设置一下就

【转载】COM 组件设计与应用(一)——起源及复合文件

原文:http://vckbase.com/index.php/wv/1201.html 一.前言 公元一九九五年某个夜黑风高的晚上,我的一位老师跟我说:“小杨呀,以后写程序就和搭积木一样啦.你赶快学习一些OLE的技术吧......”,当时我心里就寻思 :“开什么玩笑?搭积木方式写程序?再过100年吧......”,但作为一名听话的好学生,我开始在书店里“踅摸”(注1)有关OLE的书籍(注2).功夫不负有心人,终于买到了我的第一本COM书<OLE2 高级编程技术>,这本800多页的大布头花费了

WinPhone开发数据库相关操作总结

1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式: (1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误) (2)第二种跟第一种有所类似

Iscsi configureation

Internet iStorage Name Service Server The Internet Storage Name Service (iSNS) protocol is used for interaction between iSNS servers and iSNS clients. iSNS clients are computers, also known as initiators, that are attempting to discover storage devic

iscsi configuration

Internet iStorage Name Service Server The Internet Storage Name Service (iSNS) protocol is used for interaction between iSNS servers and iSNS clients. iSNS clients are computers, also known as initiators, that are attempting to discover storage devic

CQRS模式实现

[.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现 一.引言 前面介绍的所有专题都是基于经典的领域驱动实现的,然而,领域驱动除了经典的实现外,还可以基于CQRS模式来进行实现.本专题将全面剖析如何基于CQRS模式(Command Query Responsibility Segregation,命令查询职责分离)来实现领域驱动设计. 二.CQRS是什么? 在介绍具体的实现之前,对于之前不了解CQRS的朋友来说,首先第一个问题应该是:什么是CQRS啊?你倒是详细介绍完

收藏:IPicture总结

1.IPicture接口对象的创建方法1:直接通过文件创建LPCSTR szFileUrl; IPicture *pIPicture; OleLoadPicturePath(CComBSTR(szFileUrl),    (LPUNKNOWN)NULL,    0,    0,    IID_IPicture,   (LPVOID*)&pIPicture))方法2:通过IStream来创建 // 加载电子地图 LPCSTR szFileUrl; IStream *pStream = NULL; 

ILockBytes Windows Mobile 6.5

ILockBytes Windows Mobile 6.5 https://msdn.microsoft.com/zh-cn/library/aa911496(en-us,MSDN.10).aspx 这个接口是一个字节数组对象上实现由一些物理存储,如磁盘文件,全局内存或数据库. 它使用一个组件对象模型(COM)复合文件存储对象给其根存储访问物理设备,而隔离根存储访问物理存储的细节. 什么时候实现 大多数应用程序不会实现 ILockBytes 因为COM接口提供了实现最常见的一种情况: 基于文件的