培训
模块
本模块介绍了一些不同的存储技术,包括不同类型的基于服务器和基于云的存储。 本模块还将介绍配置存储以在 Windows 客户端中使用的注意事项。
结构化存储技术概述。
若要开发结构化存储,需要以下标头:
有关此技术的编程指南,请参阅:
LOCKTYPE LOCKTYPE 枚举值指示为指定字节范围请求的锁定类型。 这些值在 ILockBytes::LockRegion 和 IStream::LockRegion 方法中使用。 |
STATFLAG 指示方法是否应尝试返回 STATSTG 结构的 pwcsName 成员中的名称。 |
STGC 指定在 IStorage::Commit 和 IStream::Commit 方法中执行提交操作的条件。 |
STGMOVE 指示是移动还是复制存储元素。 |
STGTY STGTY 枚举值在 STATSTG 结构的类型成员中使用,以指示存储元素的类型。 存储元素是存储对象、流对象或字节数组对象, (LOCKBYTES) 。 |
STREAM_SEEK STREAM_SEEK枚举值指定从中计算新搜寻指针位置的原点。 |
BeginMonitor BeginMonitor 方法用于在加载操作启动时开始监视。 操作完成后,应用程序必须调用 ILayoutStorage::EndMonitor。 |
克隆 创建包含与当前 STATSTG 结构枚举器相同的枚举状态的新枚举器。 |
克隆 Clone 方法使用自己的 seek 指针创建新的流对象,该对象引用与原始流相同的字节。 |
克隆 IEnumSTATPROPSETSTG::Clone 方法创建一个枚举器,其中包含与当前 STATPROPSETSTG 结构枚举器相同的枚举状态。 |
克隆 IEnumSTATPROPSTG::Clone 方法创建一个枚举器,其中包含与当前 STATPROPSTG 结构枚举器相同的枚举状态。 |
克隆 IEnumSTATPROPSETSTG::Clone 方法创建一个枚举器,其中包含与当前 STATPROPSETSTG 结构枚举器相同的枚举状态。 |
克隆 IEnumSTATPROPSTG::Clone 方法创建一个枚举器,其中包含与当前 STATPROPSTG 结构枚举器相同的枚举状态。 |
提交 Commit 方法可确保对在事务处理模式下打开的存储对象所做的任何更改都反映在父存储中。 |
提交 Commit 方法可确保对在事务处理模式下打开的流对象所做的任何更改都反映在父存储中。 |
提交 IPropertyStorage::Commit 方法将对属性存储对象所做的更改保存到父存储对象。 |
提交 IPropertyStorage::Commit 方法将对属性存储对象所做的更改保存到父存储对象。 |
CopyTo 将打开的存储对象的整个内容复制到另一个存储对象。 |
CopyTo 将指定的字节数从流中的当前搜索指针复制到其他流中的当前搜索指针。 |
创建 在属性集存储对象中创建并打开一个新属性集。 |
CreateILockBytesOnHGlobal 创建一个字节数组对象,该对象使用 HGLOBAL 内存句柄来存储用于复合文件的内存中存储的字节。 |
CreateStorage 在指定的访问模式下,使用指定名称创建并打开嵌套在此存储对象中的新存储对象。 |
CreateStream 创建并打开具有此存储对象中包含的指定名称的流对象。 |
CreateStreamOnHGlobal 创建一个流对象,该对象使用 HGLOBAL 内存句柄来存储流内容。 |
删除 Delete 方法删除属性集存储对象中包含的属性集之一。 |
DeleteMultiple IPropertyStorage::D eleteMultiple 方法删除此属性集中存在的指示属性的任意数量。 |
DeleteMultiple IPropertyStorage::D eleteMultiple 方法删除属性集中存在的指示属性数。 |
DeletePropertyNames DeletePropertyNames 方法从当前属性集中删除指定的字符串名称。 (IPropertyStorage.DeletePropertyNames) |
DeletePropertyNames IPropertyStorage::D eletePropertyNames 方法从当前属性集中删除指定的字符串名称。 |
DestroyElement 从此存储对象中删除指定的存储或流。 |
EndMonitor EndMonitor 方法结束对复合文件的监视。 前面必须调用 ILayoutStorage::BeginMonitor。 |
Enum Enum 方法创建一个枚举器对象,该对象包含有关存储在此属性集存储中的属性集的信息。 返回时,此方法提供指向枚举器对象上的 IEnumSTATPROPSETSTG 指针的指针。 |
Enum IPropertyStorage::Enum 方法创建一个枚举器对象,该对象旨在枚举类型为 STATPROPSTG 的数据,其中包含有关当前属性集的信息。 |
Enum IPropertyStorage::Enum 方法创建一个枚举器对象,该对象旨在枚举类型为 STATPROPSTG 的数据,其中包含有关当前属性集的信息。 |
EnumElements EnumElements 方法检索指向枚举器对象的指针,该指针可用于枚举此存储对象中包含的存储和流对象。 |
FillAppend FillAppend 方法将新的字节块写入字节数组的末尾。 |
FillAt FillAt 方法将新的数据块写入字节数组中的指定位置。 |
刷新 Flush 方法可确保 ILockBytes 实现维护的任何内部缓冲区都写出到基础物理存储。 |
FmtIdToPropStgName 将属性集格式标识符 (FMTID) 转换为其存储或流名称。 |
FreePropVariantArray FreePropVariantArray 函数在 rgvars 数组中的每个 PROPVARIANT 结构上调用 PropVariantClear,使数组的每个成员的值为零。 |
GetConvertStg GetConvertStg 函数返回指定存储对象的转换位的当前值。 |
GetHGlobalFromILockBytes GetHGlobalFromILockBytes 函数检索使用 CreateILockBytesOnHGlobal 函数创建的字节数组对象的全局内存句柄。 |
GetHGlobalFromStream GetHGlobalFromStream 函数检索通过调用 CreateStreamOnHGlobal 函数创建的流的全局内存句柄。 |
HaveWriteAccess HaveWriteAccess 方法指示是否已采用写入锁定。 |
LayoutScript LayoutScript 方法为复合文件中的存储、流和控件重新排序提供了显式方向,以匹配下载过程中访问它们的顺序。 |
LockRegion LockRegion 方法限制对字节数组中指定字节范围的访问。 |
LockRegion LockRegion 方法限制对流中指定字节范围的访问。 |
MoveElementTo MoveElementTo 方法将子存储或流从此存储对象复制或移动到另一个存储对象。 |
下一页 检索枚举序列中后面的指定数量的 STATSTG 结构。 |
下一页 IEnumSTATPROPSETSTG::Next 方法检索随后在枚举序列中遵循的指定数量的 STATPROPSETSTG 结构。 |
下一页 IEnumSTATPROPSTG::Next 方法检索指定数量的 STATPROPSTG 结构,这些结构随后在枚举序列中执行。 |
下一页 IEnumSTATPROPSETSTG::Next 方法检索随后在枚举序列中遵循的指定数量的 STATPROPSETSTG 结构。 |
下一页 IEnumSTATPROPSTG::Next 方法检索指定数量的 STATPROPSTG 结构,这些结构随后在枚举序列中执行。 |
OleConvertIStorageToOLESTREAM OleConvertIStorageToOLESTREAM 函数将指定的存储对象从 OLE 2 结构化存储转换为 OLE 1 存储对象模型,但不包括表示数据。 这是几个兼容性函数之一。 |
OleConvertIStorageToOLESTREAMEx OleConvertIStorageToOLESTREAMEx 函数将指定的存储对象从 OLE 2 结构化存储转换为 OLE 1 存储对象模型,包括表示数据。 |
OleConvertOLESTREAMToIStorage 将指定对象从 OLE 1 存储模型转换为 OLE 2 结构化存储对象,而无需指定表示数据。 |
OleConvertOLESTREAMToIStorageEx OleConvertOLESTREAMToIStorageEx 函数将指定的对象从 OLE 1 存储模型转换为包含表示数据的 OLE 2 结构化存储对象。 这是几个兼容性函数之一。 |
打开 打开属性集存储对象中包含的属性集。 |
OpenStorage 在指定的访问模式下打开具有指定名称的现有存储对象。 |
OpenStream 以指定的访问模式打开此存储对象中的现有流对象。 |
PropStgNameToFmtId 将属性集存储或流名称转换为其格式标识符。 |
PropVariantClear 释放可在给定 PROPVARIANT 结构中释放的所有元素。 |
PropVariantCopy PropVariantCopy 函数将一个 PROPVARIANT 结构的内容复制到另一个结构。 |
PropVariantInit PropVariantInit 函数初始化 PROPVARIANT 结构。注意 此函数作为宏实现,可通过包含提供的 ole2.h 头文件获得。 |
读取 从当前搜寻指针开始,将指定数量的字节从流对象读取到内存中。 |
ReadAt ReadAt 方法从字节数组对象开头的指定偏移量读取指定数量的字节。 |
ReadClassStg ReadClassStg 函数读取以前使用 WriteClassStg 函数写入存储对象的 CLSID。 |
ReadClassStm 读取以前使用 WriteClassStm 函数写入流对象的 CLSID。 |
ReadFmtUserTypeStg ReadFmtUserTypeStg 函数返回以前使用 WriteFmtUserTypeStg 函数保存的剪贴板格式和用户类型。 |
ReadMultiple IPropertyStorage::ReadMultiple 方法从当前属性集中读取指定的属性。 |
ReadMultiple IPropertyStorage::ReadMultiple 方法从当前属性集中读取指定的属性。 |
ReadPropertyNames IPropertyStorage::ReadPropertyNames 方法检索指定属性 ID 的任何现有字符串名称。 |
ReadPropertyNames IPropertyStorage::ReadPropertyNames 方法检索指定属性 ID 的任何现有字符串名称。 |
ReLayoutDocfile ReLayoutDocfile 方法使用通过监视获取或通过显式布局脚本提供的布局脚本重写复合文件,以创建新的复合文件。 |
ReLayoutDocfileOnILockBytes 未实现。 如果调用,则返回STG_E_UNIMPLEMENTEDFUNCTION。 |
ReleaseWriteAccess ReleaseWriteAccess 方法释放以前获取的写入锁。 |
RenameElement RenameElement 方法重命名此存储对象中的指定子存储或流。 |
重置 将枚举序列重置为 STATSTG 结构数组的开头。 |
重置 IEnumSTATPROPSETSTG::Reset 方法将枚举序列重置为 STATPROPSETSTG 结构数组的开头。 |
重置 IEnumSTATPROPSTG::Reset 方法将枚举序列重置为 STATPROPSTG 结构数组的开头。 |
重置 IEnumSTATPROPSETSTG::Reset 方法将枚举序列重置为 STATPROPSETSTG 结构数组的开头。 |
重置 IEnumSTATPROPSTG::Reset 方法将枚举序列重置为 STATPROPSTG 结构数组的开头。 |
还原 Revert 方法放弃自上次提交操作以来对存储对象所做的所有更改。 |
还原 Revert 方法放弃自上次 IStream::Commit 调用以来对事务处理流所做的所有更改。 在直接模式中打开的流和使用 IStream::Revert 的 COM 复合文件实现的流时,此方法不起作用。 |
还原 IPropertyStorage::Revert 方法放弃自上次打开以来对命名属性集所做的所有更改,或放弃上次提交到属性集的更改。 |
还原 IPropertyStorage::Revert 方法放弃自上次打开以来对命名属性集所做的所有更改,或放弃上次提交到属性集的更改。 |
Seek 将查找指针更改为新位置。 新位置相对于流的开头、流的末尾或当前查找指针。 |
SetClass SetClass 方法将指定的类标识符 (CLSID) 分配给此存储对象。 |
SetClass IPropertyStorage::SetClass 方法将新的 CLSID 分配给当前属性存储对象,并将 CLSID 与 对象一起持久存储。 |
SetClass IPropertyStorage::SetClass 方法将新的 CLSID 分配给当前属性存储对象,并将 CLSID 与 对象一起持久存储。 |
SetConvertStg SetConvertStg 函数设置存储对象中的转换位,以指示对象在打开时要转换为新类。 可以通过调用 GetConvertStg 函数来检索设置。 |
SetElementTimes 如果基础文件系统支持此方法,SetElementTimes 方法会设置指定存储元素的修改、访问和创建时间。 |
SetFillSize SetFillSize 方法设置字节数组的预期大小。 |
SetSize SetSize 方法更改字节数组的大小。 |
SetSize 更改流对象的大小。 |
SetStateBits SetStateBits 方法在此存储对象中存储最多 32 位的状态信息。 |
SetTimes IPropertyStorage::SetTimes 方法设置此属性集的修改、访问和创建时间(如果实现支持)。 |
SetTimes IPropertyStorage::SetTimes 方法设置此属性集的修改、访问和创建时间(如果实现支持)。 |
Skip 跳过枚举序列中指定数量的 STATSTG 结构。 |
Skip IEnumSTATPROPSETSTG::Skip 方法跳过枚举序列中指定数量的 STATPROPSETSTG 结构。 (IEnumSTATPROPSETSTG.Skip) |
Skip IEnumSTATPROPSTG::Skip 方法跳过枚举序列中指定数量的 STATPROPSTG 结构。 (IEnumSTATPROPSTG.Skip) |
Skip IEnumSTATPROPSETSTG::Skip 方法跳过枚举序列中指定数量的 STATPROPSETSTG 结构。 |
Skip IEnumSTATPROPSTG::Skip 方法跳过枚举序列中指定数量的 STATPROPSTG 结构。 |
统计 Stat 方法检索包含此字节数组对象信息的 STATSTG 结构。 |
统计 Stat 方法检索此打开的存储对象的 STATSTG 结构。 |
统计 Stat 方法检索此流的 STATSTG 结构。 |
统计 IPropertyStorage::Stat 方法检索有关当前打开的属性集的信息。 (IPropertyStorage.Stat) |
统计 IPropertyStorage::Stat 方法检索有关当前打开的属性集的信息。 (IPropertyStorage.Stat) |
StgConvertPropertyToVariant 将 SERIALIZEDPROPERTYVALUE 数据类型转换为 PROPVARIANT 数据类型。 |
StgConvertVariantToProperty 将 PROPVARIANT 数据类型转换为 SERIALIZEDPROPERTYVALUE 数据类型。 |
StgCreateDocfile 使用适用于 IStorage 接口的 COM 提供的复合文件实现创建新的复合文件存储对象。 |
StgCreateDocfileOnILockBytes 在调用方提供的字节数组对象的基础上创建并打开一个新的复合文件存储对象。 |
StgCreatePropSetStg 从指定的存储对象创建属性集存储对象。 |
StgCreatePropStg 在指定的存储或流对象中创建并打开属性集。 |
StgCreateStorageEx 使用为 IStorage 或 IPropertySetStorage 接口提供的实现创建新的存储对象。 |
StgDeserializePropVariant StgDeserializePropVariant 函数将 SERIALIZEDPROPERTYVALUE 数据类型转换为 PROPVARIANT 数据类型。 |
StgGetIFillLockBytesOnFile 打开临时文件上的包装器对象。 |
StgGetIFillLockBytesOnILockBytes 在调用方提供的字节数组对象上创建新的包装器对象。 |
StgIsStorageFile StgIsStorageFile 函数指示特定磁盘文件是否包含存储对象。 |
StgIsStorageILockBytes StgIsStorageILockBytes 函数指示指定的字节数组是否包含存储对象。 |
StgOpenAsyncDocfileOnIFillLockBytes 在调用方提供的字节数组包装器对象上打开现有的根异步存储对象。 |
StgOpenLayoutDocfile 在能够监视扇区数据的 ILockBytes 实现上打开复合文件。 |
StgOpenPropStg 打开指定存储或流对象中的指定属性集。 |
StgOpenStorage 打开文件系统中的现有根存储对象。 |
StgOpenStorageEx 打开文件系统中的现有根存储对象。 使用此函数可打开复合文件和常规文件。 |
StgOpenStorageOnILockBytes StgOpenStorageOnILockBytes 函数会打开一个现有的存储对象,该对象不驻留在磁盘文件中,而是具有调用方提供的基础字节数组。 |
StgPropertyLengthAsVariant StgPropertyLengthAsVariant 函数检查 SERIALIZEDPROPERTYVALUE 并返回此属性将作为 PROPVARIANT 占用的内存量。 |
StgSerializePropVariant StgSerializePropVariant 函数将 PROPVARIANT 数据类型转换为 SERIALIZEDPROPERTYVALUE 数据类型。 |
StgSetTimes StgSetTimes 函数设置所指示文件的创建、访问和修改时间(如果基础文件系统支持)。 |
SwitchToFile SwitchToFile 方法将与存储对象关联的当前文件复制到新文件。 |
Terminate Terminate 方法通知字节数组下载已终止(成功或失败)。 |
UnlockRegion UnlockRegion 方法删除对以前锁定的字节范围的访问限制。 |
UnlockRegion UnlockRegion 方法删除对以前使用 IStream::LockRegion 限制的字节范围的访问限制。 |
WaitForWriteAccess WaitForWriteAccess 方法获取对存储对象的独占写入访问权限。 |
写入 将指定数目的字节写入以当前搜索指针开始的流对象。 |
WriteAt WriteAt 方法从字节数组开头的指定偏移量开始写入指定的字节数。 |
WriteClassStg WriteClassStg 函数将指定的类标识符 (CLSID) 存储在存储对象中。 |
WriteClassStm WriteClassStm 函数将指定的 CLSID 存储在流中。 |
WriteFmtUserTypeStg WriteFmtUserTypeStg 函数将剪贴板格式和用户类型写入存储对象。 |
WriteMultiple IPropertyStorage::WriteMultiple 方法将指定的属性组写入当前属性集。 |
WriteMultiple IPropertyStorage::WriteMultiple 方法将指定的属性组写入当前属性集。 |
WritePropertyNames IPropertyStorage::WritePropertyNames 方法将字符串 IPropertyStoragenames 分配给当前属性集中的指定属性 ID 数组。 |
WritePropertyNames IPropertyStorage::WritePropertyNames 方法将字符串 IPropertyStoragenames 分配给当前属性集中的指定属性 ID 数组。 |
IDirectWriterLock IDirectWriterLock 接口允许单个编写器获取对直接模式下打开的根存储对象的独占写入访问权限,同时允许多个读取器进行并发访问。 |
IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG 接口循环访问 STATPROPSETSTG 结构的数组,其中包含有关当前 IPropertySetStorage 实例管理的属性集的统计数据。 |
IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG 接口循环访问 STATPROPSETSTG 结构的数组,其中包含有关当前 IPropertySetStorage 实例管理的属性集的统计数据。 |
IEnumSTATPROPSTG IEnumSTATPROPSTG 接口循环访问 STATPROPSTG 结构的数组。 STATPROPSTG 结构包含有关属性集中属性的统计数据。 |
IEnumSTATPROPSTG IEnumSTATPROPSTG 接口循环访问 STATPROPSTG 结构的数组,其中包含有关属性集中属性的统计数据。 |
IEnumSTATSTG 枚举 STATSTG 结构的数组。 |
IFillLockBytes IFillLockBytes 接口使下载代码能够以异步方式将数据写入结构化存储字节数组。 |
ILayoutStorage ILayoutStorage 接口使应用程序能够优化其复合文件的布局,以便通过慢速链接高效下载。 |
ILockBytes ILockBytes 接口是在由某些物理存储(如磁盘文件、全局内存或数据库)支持的字节数组对象上实现的。 |
IPropertySetStorage IPropertySetStorage 接口创建、打开、删除和枚举支持 IPropertyStorage 接口实例的属性集存储。 |
IPropertyStorage IPropertyStorage 接口管理单个属性集的持久属性。 (IPropertyStorage 接口) |
IPropertyStorage IPropertyStorage 接口管理单个属性集的持久属性。 (IPropertyStorage 接口) |
IRootStorage IRootStorage 接口包含一个方法,该方法将存储对象切换到其他基础文件并将存储对象保存到该文件。 |
ISequentialStream ISequentialStream 接口支持对流对象进行简化的顺序访问。 IStream 接口从 ISequentialStream 继承其 Read 和 Write 方法。 |
IStorage IStorage 接口支持创建和管理结构化存储对象。 |
IStream IStream 接口允许读取和写入数据流对象。 |
PROPSPEC IPropertyStorage 的许多方法使用 PROPSPEC 结构通过属性标识符 (ID) 或关联的字符串名称来指定属性。 |
PROPSPEC IPropertyStorage 的许多方法使用 PROPSPEC 结构通过属性标识符 (ID) 或关联的字符串名称来指定属性。 |
PROPVARIANT PROPVARIANT 结构在 IPropertyStorage 的 ReadMultiple 和 WriteMultiple 方法中用于定义属性集中的属性的类型标记和值。 |
PROPVARIANT PROPVARIANT 结构在 IPropertyStorage 的 ReadMultiple 和 WriteMultiple 方法中用于定义属性集中的属性的类型标记和值。 |
RemSNB RemSNB 结构用于封送 SNB 数据类型。在 IStorage 接口 (Storag.idl) 中定义。 |
STATPROPSETSTG STATPROPSETSTG 结构包含有关属性集的信息。 (STATPROPSETSTG 结构) |
STATPROPSETSTG STATPROPSETSTG 结构包含有关属性集的信息。 (STATPROPSETSTG 结构) |
STATPROPSTG STATPROPSTG 结构包含有关属性集中单个属性的数据。 此数据是属性 ID 和类型标记,以及可能与属性关联的可选字符串名称。 |
STATPROPSTG STATPROPSTG 结构包含有关属性集中单个属性的数据。 此数据是属性 ID 和类型标记,以及可能与属性关联的可选字符串名称。 |
STATSTG 包含有关开放存储、流或字节数组对象的统计数据。 |
STGOPTIONS 指定 StgCreateStorageEx 和 StgOpenStorageEx 函数中的存储对象的功能,例如扇区大小。 |
StorageLayout 描述单个数据块,包括其名称、位置和长度。 |
培训
模块
本模块介绍了一些不同的存储技术,包括不同类型的基于服务器和基于云的存储。 本模块还将介绍配置存储以在 Windows 客户端中使用的注意事项。