IMDEmbedded 接口

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

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

  • 设置包含文档的 URL。

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

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

  • 取消当前嵌入的操作。

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

  • 验证嵌入的数据库自上次保存以来是否已更改。 从 IPersistStream 继承。

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

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

参考

以下参考记录IMDEmbedded了 msmd.h 头文件中所示的 接口。

源文件: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
因为在存储设备上没有剩余空间,所以该数据库无法保存。