IMDEmbedded 接口

IMDEmbedded 接口是用于管理嵌入的 PowerPivot 数据库或表格模型数据库的公共接口。 此接口继承自 IPersistStream 接口。 此接口允许以下操作:

  • 获取对容器文档中嵌入流的标识符。

  • 设置包含文档的 URL。

  • 设置一个标志,以便指示嵌入应用程序是否处于宿主环境中。

  • 设置嵌入应用程序使用的临时文件的路径。

  • 取消当前嵌入的操作。

  • 获取流的估计大小(以字节为单位)以便保存嵌入的对象。 从 IPersistStream 继承。

  • 确认自上次保存后嵌入的数据库是否已更改。 从 IPersistStream 继承。

  • 将嵌入的数据库加载到本地或进程内引擎。 从 IPersistStream 继承。

  • 将本地或进程内数据库保存到容器文档中的嵌入流。 从 IPersistStream 继承。

参考

以下参考文档介绍在 msmd.h 头文件中提供的 IMDEmbedded 接口。

源文件:PXOEmbeddedData.idl

[
  local,                          
  object,                         
  uuid(6B6691CF-5453-41c2-ADD9-4F320B7FD421),                     
  pointer_default(unique)         
]
interface IMDEmbeddedData : IPersistStream
{
 [id(1), helpstring("Set flag indicating if the application is in a hosted environment")] 
 HRESULT SetHosted(
  [in] BOOL in_fIsHosted);

 [id(2), helpstring("Set the URL for the document containing the embedded stream")] 
 HRESULT SetContainerURL(
  [in] BSTR in_bstrURL);

 [id(3), helpstring("Get identifier used to look up embedded stream in container document")] 
 HRESULT GetStreamIdentifier(
  [out, retval] BSTR* out_pbstrStreamId);

 [id(4), helpstring("Set the path used by the embedding application for temporary files")] 
 HRESULT SetTempDirPath(
  [in]  BSTR in_bstrPath);

 [id(5), helpstring("Cancel the current operation")] 
 HRESULT Cancel();
};

IMDEmbeddedData::GetStreamIdentifier

HRESULT GetStreamIdentifier (
    [out, retval] BSTR * out_pbstrStreamId
    )

说明

获取宿主应用程序使用的针对容器文档中嵌入流的标识符。

参数

  • out_pbstrStreamId
    指定流标识符的位置。

返回值

  • S_OK
    流标识符已成功返回。

  • S_FALSE
    没有流标识符。

  • E_FAIL
    在访问流标识符时出现错误。

备注

为了确认当前连接是否包含嵌入数据库,用户应从 OLE DB 连接属性查看 DBPROP_MSMD_EMBEDDED_DATA 属性的值。

DBPROP_MSMD_EMBEDDED_DATA 的可能值包括:

名称

定义

DBPROPVAL_EMBED_NONE

0x00

没有可用的嵌入数据库

DBPROPVAL_EMBED_EMBEDDED

0x01

当前应用程序包含嵌入数据库

DBPROPVAL_EMBED_LINKED

0x02

嵌入数据库在远程应用程序(即 SharePoint Server)中承载

数据源

[id(1), helpstring("Get identifier used to look up embedded stream in container document")] 
 HRESULT GetStreamIdentifier(
  [out, retval] BSTR* out_pbstrStreamId);

IMDEmbeddedData::SetContainerURL

HRESULT SetContainerURL (
    [in] BSTR in_bstrURL
    )

说明

设置包含嵌入流的文件的 URL。

参数

  • in_bstrURL
    指定包含文档的 URL。

返回值

  • S_OK
    容器 URL 已成功设置。

  • E_FAIL
    在设置容器 URL 时出错。

[id(2), helpstring("Set the URL for the document containing the embedded stream")] 
 HRESULT SetContainerURL(
  [in] BSTR in_bstrURL);

IMDEmbeddedData::SetHosted

HRESULT SetHosted (
    [in] BOOL in_fIsHosted
    )

说明

设置一个标志,以便指示嵌入应用程序是否处于宿主环境中。

参数

  • in_ftHosted
    如果调用方在服务应用程序(例如 IIS)中承载,则为 TRUE。

返回值

  • S_OK
    该标志已成功设置。

  • E_FAIL
    在设置标志时出错。

数据源

[id(5), helpstring("Set flag indicating if the application is in a hosted environment")] 
 HRESULT SetHosted(
  [in]  BOOL in_fIsHosted);

IMDEmbeddedData::SetTempDirPath

HRESULT SetTempDirPath (
    [in] BSTR in_bstrPath
    )

说明

设置嵌入应用程序使用的临时文件的路径。

参数

  • in_bstrPath
    宿主应用程序用于临时文件的路径。

返回值

  • S_OK
    临时文件目录已成功设置。

  • E_FAIL
    在设置路径时出错。

[id(4), helpstring("Set the path used by the host application for temporary files")] 
 HRESULT SetTempDirPath(
  [in]  BSTR in_bstrPath);

IMDEmbeddedData::Cancel

HRESULT Cancel ( void )

说明

取消当前嵌入的数据库操作

参数

无。

返回值

  • S_OK
    操作已成功取消。

  • DB_E_CANTCANCEL
    当前没有正在进行中的可取消操作。

  • E_FAIL
    在取消嵌入的操作时出错。

[id(5), helpstring("Cancel the current operation")] 
 HRESULT Cancel();

IMDEmbeddedData::GetSizeMax (IPersistStream::GetSizeMax)

HRESULT GetSizeMax (
    [out] ULARGE_INTEGER * out_pcbSize
    )

说明

获取流的估计大小(以字节为单位)以便保存嵌入的对象。 从 IPersistStream 继承。

参数

  • in_bstrPath
    嵌入的数据库图像的估计大小(以字节为单位)。

返回值

  • S_OK
    该大小已成功获取。

  • E_FAIL
    在获取大小时出错。

IMDEmbeddedData::IsDirty (IPersistStream::IsDirty)

HRESULT IsDirty ( void )

说明

确认自上次保存后嵌入的数据库是否已更改。 从 IPersistStream 继承。

参数

返回值

  • S_OK
    自上次保存后数据库已更改。

  • S_FALSE
    自上次保存后数据库未更改。

  • E_FAIL
    在获取数据库状态时出错。

IMDEmbeddedData::Load (IPersistStream::Load)

HRESULT Load ( 
    [in] IStream * in_pStm 
    )

说明

将嵌入的数据库加载到本地或进程内引擎。 从 IPersistStream 继承。

参数

  • in_pStm
    指向从其加载嵌入的数据库的流接口的指针。

返回值

  • S_OK
    数据库已成功加载。

  • E_OUTOFMEMORY
    没有足够的内存可用来加载数据库。

  • E_FAIL
    在加载数据库时出错,不同于 E_OUTOFMEMORY。

IMDEmbeddedData::Save (IPersistStream::Save)

HRESULT Save ( 
    [in] IStream * in_pStm,
    [in] BOOL in_fClearDirty
    )

说明

将本地或进程内数据库保存到容器文档中的嵌入流。 从 IPersistStream 继承。

参数

  • in_pStm
    指向将嵌入的数据库保存到的流接口的指针。

  • in_fClearDirty
    一个标志,该标志指示在此操作后是否应清除脏标志。

返回值

  • S_OK
    数据库已成功保存。

  • STG_E_CANTSAVE
    在保存数据库时出错,不同于 STG_E_MEDIUMFULL。

  • STG_E_MEDIUMFULL
    因为在存储设备上没有剩余空间,所以该数据库无法保存。