Share via


IWMSDataSourcePlugin::CreateDataSourceDirectory

banner art

Previous Next

IWMSDataSourcePlugin::CreateDataSourceDirectory

The server calls the CreateDataSourceDirectory method to create a directory data container.

Syntax

  HRESULT CreateDataSourceDirectory(
  IWMSCommandContext*  pCommandContext,
  LPWSTR  pszContainerName,
  DWORD  dwFlags,
  IWMSDataSourcePluginCallback*  pCallback,
  QWORD  qwContext
);

Parameters

pCommandContext

[in] Pointer to an IWMSCommandContext interface containing a command context.

pszContainerName

[in] Pointer to a null-terminated string containing the path of the directory to create.

dwFlags

[in] DWORD containing the flags.

pCallback

[in] Pointer to an IWMSDataSourcePluginCallback interface. The plug-in calls IWMSDataSourcePluginCallback::OnCreateDirectory to return the results to the server.

qwContext

[in] QWORD containing a value defined by the server to identify which CreateDataSourceDirectory request the plug-in is responding to when it calls IWMSDataSourcePluginCallback::OnCreateDirectory. The plug-in must pass this value back unaltered.

Return Values

If the method succeeds, the plug-in must return S_OK. To report an error, the plug-in can return any HRESULT other than S_OK. If the plug-in uses the IWMSEventLog interface to log error information directly to the Windows Event Viewer, it is recommended that it return NS_E_PLUGIN_ERROR_REPORTED. Typically, the server attempts to make plug-in error information available to the server object model, the Windows Event Viewer, and the troubleshooting list in the details pane of the Windows Media Services MMC. However, if the plug-in uses the IWMSEventLog interface to send custom error information to the Windows Event Viewer, returning NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about retrieving plug-in error information, see Identifying Plug-in Errors.

Example Code

The following example illustrates a possible implementation of CreateDataSourceDirectory for an NTFS data source plug-in.

#define URL_SCHEME_LENGTH   7
#define URL_SCHEME   L"file://"

HRESULT STDMETHODCALLTYPE 
CDataSourcePlugin::CreateDataSourceDirectory( 
                    IWMSCommandContext *pCommandContext,
                    LPWSTR pszContainerName,
                    DWORD dwFlags,
                    IWMSDataSourcePluginCallback *pCallback,
                    QWORD qwContext
                    )
{
    // Declare variables.
    HRESULT hr = S_OK;
    BOOL fSuccess;
    LPWSTR pszNtfsPathname = NULL;
    LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL;

    // Specify the path name and create the directory. Drop
    // the scheme type from the path name.
    pszNtfsPathname = pszContainerName + URL_SCHEME_LENGTH;
    fSuccess = ::CreateDirectory( pszNtfsPathname, lpSecurityAttributes );

    // Return the result to the server.
    hr = pCallback->OnCreateDirectory( hr, qwContext );
    if (FAILED(hr)) goto EXIT;

EXIT:
    // TODO: Release temporary objects.
    return( hr );
}

Requirements

Header: datacontainer.h.

Library: WMSServerTypeLib.dll.

Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.

See Also

Previous Next