IMDEmbedded Interface

The IMDEmbedded interface is a public interface used to manage an embedded PowerPivot database or a tabular model database. The interface inherits from the IPersistStream interface. The interface allows for the following operations:

  • Get an identifier to the embedded stream in the container document.

  • Set the URL of the containing document.

  • Set a flag to indicate if the embedding application is in a hosted environment.

  • Set the path to temporary files used by the embedding application.

  • Cancel the current embedded operation.

  • Get the estimated size (in bytes) of the stream to save the embedded object. Inherited from IPersistStream.

  • Verify if the embedded database has changed since it was last saved. Inherited from IPersistStream.

  • Load the embedded database to the local or in-process engine. Inherited from IPersistStream.

  • Save the local or in-process database to the embedded stream in the container document. Inherited from IPersistStream.

Reference

The following reference documents the IMDEmbedded interface as presented in msmd.h header file.

Source file: 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
    )

Description

Gets the identifier used by the host application to the embedded stream in the container document.

Parameters

  • out_pbstrStreamId
    Specifies the location of the stream identifier.

Return Value

  • S_OK
    The stream identifier was successfully returned.

  • S_FALSE
    There is no stream identifier.

  • E_FAIL
    An error occurred accessing the stream identifier.

Remarks

To verify if the current connection contains an embedded database, the user should check the value of the DBPROP_MSMD_EMBEDDED_DATA property from the OLE DB connection properties.

The possible values for DBPROP_MSMD_EMBEDDED_DATA are:

Name

Value

Definition

DBPROPVAL_EMBED_NONE

0x00

No embedded database available

DBPROPVAL_EMBED_EMBEDDED

0x01

The current application contains the embedded database

DBPROPVAL_EMBED_LINKED

0x02

The embedded database is hosted in a remote application (i.e. SharePoint Server)

Source

[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
    )

Description

Sets the URL for the file containing the embedded stream.

Parameters

  • in_bstrURL
    Specifies the URL for the containing document.

Return Value

  • S_OK
    The container URL was successfully set.

  • E_FAIL
    An error occurred while setting the container URL.

Source

[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
    )

Description

Set a flag to indicate if the embedding application is in a hosted environment.

Parameters

  • in_ftHosted
    TRUE if caller is in a hosted in a service application (like IIS).

Return Value

  • S_OK
    The flag was successfully set.

  • E_FAIL
    An error occurred while setting the flag.

Source

[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
    )

Description

Set the path to temporary files used by the embedding application.

Parameters

  • in_bstrPath
    The path used by the host application for temporary files.

Return Value

  • S_OK
    The temporary file directory was successfully set.

  • E_FAIL
    An error occurred while setting the path.

Source

[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 )

Description

Cancels the current embedded database operation

Parameters

None.

Return Value

  • S_OK
    The operation was successfully cancelled.

  • DB_E_CANTCANCEL
    No cancellable operation is currently in progress.

  • E_FAIL
    An error occurred while cancelling the embedded operation.

Source

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

IMDEmbeddedData::GetSizeMax (IPersistStream::GetSizeMax)

HRESULT GetSizeMax (
    [out] ULARGE_INTEGER * out_pcbSize
    )

Description

Gets the estimated size (in bytes) of the stream to save the embedded object. Inherited from IPersistStream.

Parameters

  • in_bstrPath
    The estimated size (in bytes) of the embedded database image.

Return Value

  • S_OK
    The size was successfully obtained.

  • E_FAIL
    An error occurred while obtaining the size.

IMDEmbeddedData::IsDirty (IPersistStream::IsDirty)

HRESULT IsDirty ( void )

Description

Verifies if the embedded database has changed since it was last saved. Inherited from IPersistStream.

Parameters

none

Return Value(s)

  • S_OK
    The database has changed since it was last saved.

  • S_FALSE
    The database has not changed since it was last saved.

  • E_FAIL
    An error occurred while obtaining the database state.

IMDEmbeddedData::Load (IPersistStream::Load)

HRESULT Load ( 
    [in] IStream * in_pStm 
    )

Description

Loads the embedded database to the local or in-process engine. Inherited from IPersistStream.

Parameters

  • in_pStm
    A pointer to a stream interface from where to load the embedded database.

Return Value(s)

  • S_OK
    The database was successfully loaded.

  • E_OUTOFMEMORY
    Not enough memory to load the database.

  • E_FAIL
    An error occurred while loading the database, different than E_OUTOFMEMORY.

IMDEmbeddedData::Save (IPersistStream::Save)

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

Description

Saves the local or in-process database to the embedded stream in the container document. Inherited from IPersistStream.

Parameters

  • in_pStm
    A pointer to a stream interface to where to save the embedded database.

  • in_fClearDirty
    A flag that indicates whether the dirty flag should be cleared after this operation.

Return Value(s)

  • S_OK
    The database was successfully saved.

  • STG_E_CANTSAVE
    An error occurred while saving the database, different than STG_E_MEDIUMFULL.

  • STG_E_MEDIUMFULL
    The database could not be saved because there is no space left on the storage device.