//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName:            WMSPlaylistParser.idl
//
// Abstract:
//
//*****************************************************************************

cpp_quote("//*****************************************************************************")
cpp_quote("//")
cpp_quote("//  Microsoft Windows Media")
cpp_quote("//  Copyright (C) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//  Automatically generated by Midl from WMSPlaylistParser.idl")
cpp_quote("//")
cpp_quote("//  DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//*****************************************************************************")

import "oaidl.idl";
import "xmldom.idl";

import "nsscore.idl";
import "wmsbuffer.idl";
import "wmscontext.idl";
import "dataContainer.idl";

interface IWMSPlaylistParserCallback;
interface IWMSPlaylistParserPluginCallback;


cpp_quote( "EXTERN_GUID( IID_IWMSPlaylistParser, 0xee1f2ec, 0x48ef, 0x11d2, 0x9e, 0xff, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
cpp_quote( "EXTERN_GUID( IID_IWMSPlaylistParserCallback, 0xee1f2ed, 0x48ef, 0x11d2, 0x9e, 0xff, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
cpp_quote( "EXTERN_GUID( IID_IWMSPlaylistParserPlugin, 0xfa8764c1, 0x90a2, 0x11d2, 0x9f, 0x22, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
cpp_quote( "EXTERN_GUID( IID_IWMSPlaylistParserPluginCallback, 0xfa8764c2, 0x90a2, 0x11d2, 0x9f, 0x22, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )




//////////////////////////////////////////////////////////////////////////////
//
//                              PLAYLIST PARSERS
//
//////////////////////////////////////////////////////////////////////////////
[
    object,
    pointer_default(unique),
    uuid(0EE1F2EC-48EF-11d2-9EFF-006097D2D7CF),
    version(9.0),
    helpstring("Provides methods for parsing a playlist file.")
]
interface IWMSPlaylistParser : IUnknown
{
    [helpstring("Interprets the playlist file contained in a buffer and transforms it into an IXMLDOMDocument object.")] HRESULT 
    ReadPlaylist(
                [in] INSSBuffer *pBuffer,
                [in] IXMLDOMDocument *pPlaylist,
                [in] IWMSPlaylistParserCallback *pCallback,
                [in] QWORD qwContext
                );
    [helpstring("Transforms an IXMLDOMDocument object to a specific playlist syntax and saves it to a buffer.")] HRESULT 
    WritePlaylist(
                [in] IXMLDOMDocument *pPlaylist,
                [in] IWMSPlaylistParserCallback *pCallback,
                [in] QWORD qwContext
                );
    [helpstring("Creates a playlist from files in a directory.")] HRESULT 
    ReadPlaylistFromDirectory(
                [in] IWMSDirectory *pDirectory,
				[in] LPWSTR pszwFilePattern,
                [in] IXMLDOMDocument *pPlaylist,
                [in] IWMSPlaylistParserCallback *pCallback,
                [in] QWORD qwContext
                );
}




//////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////
[
    object,
    pointer_default(unique),
    uuid(0EE1F2ED-48EF-11d2-9EFF-006097D2D7CF),
    version(9.0),
    helpstring("Contains methods that enable a playlist parser object to respond to calls that the server makes through the IWMSPlaylistParser interface.")
]
interface IWMSPlaylistParserCallback : IUnknown
{
    [helpstring("Returns the result of either the IWMSPlaylistParser::ReadPlaylist or IWMSPlaylistParser::ReadPlaylistFromDirectory method call.")] HRESULT 
    OnReadPlaylist(
                [in] HRESULT hr,
                [in] QWORD qwContext
                );
    [helpstring("Returns the result of the IWMSPlaylistParser::WritePlaylist method call.")] HRESULT 
    OnWritePlaylist(
                [in] HRESULT hr,
                [in] INSSBuffer *pBuffer,
                [in] QWORD qwContext
                );
}





//////////////////////////////////////////////////////////////////////////////
//
//                          PLAYLIST PARSER PLUGIN
//
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
[
    object,
    pointer_default(unique),
    uuid(FA8764C1-90A2-11d2-9F22-006097D2D7CF),
    version(9.0),
    helpstring("Provides a method for creating playlist parser objects."),
]
interface IWMSPlaylistParserPlugin : IUnknown
{
    [helpstring("Creates a playlist parser object.")] HRESULT 
    CreatePlaylistParser(
                [in] IWMSCommandContext *pCommandContext,
                [in] IWMSContext *pUser,
                [in] IWMSContext *pPresentation,
                [in] DWORD dwFlags, // Not used
                [in] IWMSClassObject *pFactory,
                [in] IWMSBufferAllocator *pBufferAllocator,
                [in] IWMSPlaylistParserPluginCallback *pCallback,
                [in] QWORD qwContext
                );
}




//////////////////////////////////////////////////////////////////////////////
[
    object,
    pointer_default(unique),
    uuid(FA8764C2-90A2-11d2-9F22-006097D2D7CF),
    version(9.0),
    helpstring("Contains a method that enables a playlist plug-in to respond to calls that the server makes through the IWMSPlaylistParserPlugin interface."),
]
interface IWMSPlaylistParserPluginCallback : IUnknown
{
    [helpstring("Returns the results of the IWMSPlaylistParserPlugin::CreatePlaylistParser method call.")] HRESULT 
    OnCreatePlaylistParser( 
                [in] HRESULT hr,
                [in] IWMSPlaylistParser *pParser,
                [in] QWORD qwContext
                );
}








