Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

442 lines
17 KiB

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName: datacontainer.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 datacontainer.idl" )
cpp_quote("//")
cpp_quote("// DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//*****************************************************************************")
import "objidl.idl";
import "WMSBuffer.idl";
import "WMSContext.idl";
import "DataContainerVersion.idl";
import "wmsPacket.idl";
interface IWMSDataSourcePlugin;
interface IWMSDataSourcePluginCallback;
interface IWMSDataContainer;
interface IWMSDataContainerCallback;
interface IWMSDirectory;
interface IWMSPacketList;
cpp_quote( "#define WMS_DATA_CONTAINER_NONSEEKABLE 0xFFFFFFFFFFFFFFFF" )
cpp_quote( "EXTERN_GUID( IID_IWMSDataSourcePlugin, 0xE1CD3525,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSDataSourcePluginCallback, 0xE1CD3526,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSDataContainer, 0xE6EE9A13,0x0FCC,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSDataContainerCallback, 0x2E34AB82,0x0D3D,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSDirectory, 0x6fa365e7, 0xe8b9, 0x437a, 0x8c, 0x4b, 0x65, 0x52, 0xdf, 0xbb, 0xc, 0x57 );" )
// {9B6C9E51-4813-11d2-9EFF-006097D2D7CF}
cpp_quote( "EXTERN_GUID( IID_IWMSUnknownFormat, 0x9b6c9e51, 0x4813, 0x11d2, 0x9e, 0xff, 0x00, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
// {7408CEB0-3A5A-41b6-A5EC-9A4E811C9673}
cpp_quote( "EXTERN_GUID( IID_IWMSDirectoryFormat, 0x7408ceb0, 0x3a5a, 0x41b6, 0xa5, 0xec, 0x9a, 0x4e, 0x81, 0x1c, 0x96, 0x73 );" )
// {c34294ea-e111-4fb2-be6b-ec686a1a9757}
cpp_quote( "EXTERN_GUID( IID_IWMSPlaylistSmilFormat, 0xc34294ea, 0xe111, 0x4fb2, 0xbe, 0x6b, 0xec, 0x68, 0x6a, 0x1a, 0x97, 0x57 );" )
// Flags for OpenDataContainer
typedef [public] enum WMS_DATA_CONTAINER_OPEN_FLAGS
{
WMS_DATA_CONTAINER_READ_ACCESS = 0x0001,
WMS_DATA_CONTAINER_WRITE_ACCESS = 0x0002,
WMS_DATA_CONTAINER_CREATE_NEW_CONTAINER = 0x0004,
WMS_DATA_CONTAINER_ALLOW_BUFFER_IO = 0x0008,
WMS_DATA_CONTAINER_SHARED_SOURCE = 0x0010
} WMS_DATA_CONTAINER_OPEN_FLAGS;
// These are the flags set in each WMSDirectoryEntryInfo
typedef [public] enum WMS_DIRECTORY_ENTRY_FLAGS
{
WMS_DIRECTORY_ENTRY_IS_DIRECTORY = 0x0001
} WMS_DIRECTORY_ENTRY_FLAGS;
// These are the values requested from GetInfo.
typedef [public] enum WMS_DATA_CONTAINER_GETINFO_VALUES
{
WMS_DATA_CONTAINER_SIZE = 1,
WMS_DATA_CONTAINER_MAX_SUPPORTED_READ_SIZE = 2
} WMS_DATA_CONTAINER_GETINFO_VALUES;
// These are the flags passed to OnGetInfo.
// This flag tells you whether the position parameter is
// used in the read and write methods.
typedef [public] enum WMS_DATA_CONTAINER_GETINFO_FLAGS
{
WMS_SEEKABLE_CONTAINER = 0x0001,
WMS_LOCAL_DATA_CONTAINER = 0x0002
} WMS_DATA_CONTAINER_GETINFO_FLAGS;
// These are the flags returned by GetDataSourceAttributes.
typedef [public] enum WMS_DATA_CONTAINER_ATTRIBUTES
{
WMS_DATA_CONTAINER_SUPPORTS_ENUMERATION = 0x0001
} WMS_DATA_CONTAINER_ATTRIBUTES;
typedef unsigned __int64 QWORD;
//////////////////////////////////////////////////////////////////////////////
//
// STORAGE SYSTEM
//
// This manages the name space for a particular storage model, like
// a file system, a network, etc.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(E1CD3525-03D7-11d2-9EED-006097D2D7CF),
version(9.0),
helpstring("Provides methods to manage data containers and retrieve information about them.")
]
interface IWMSDataSourcePlugin : IUnknown
{
[helpstring("Retrieves the attribute flags associated with a data container.")] HRESULT
GetDataSourceAttributes(
[out] DWORD *pdwFlags
);
[helpstring("Retrieves the physical paths of the root directories associated with a data container.")] HRESULT
GetRootDirectories(
[in] LPWSTR *pstrRootDirectoryList,
[in] DWORD dwMaxRoots,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Opens or creates a data container.")] HRESULT
OpenDataContainer(
[in] IWMSCommandContext *pCommandContext,
[in] IWMSContext *pUserContext,
[in] IWMSContext *pPresentationContext,
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSBufferAllocator *pBufferAllocator,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Opens a directory data container.")] HRESULT
OpenDirectory(
[in] IWMSCommandContext *pCommandContext,
[in] IWMSContext *pUserContext,
[in] IWMSContext *pPresentationContext,
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSBufferAllocator *pBufferAllocator,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Deletes a data container.")] HRESULT
DeleteDataContainer(
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Retrieves version information about a data container.")] HRESULT
GetDataContainerVersion(
[in] IWMSCommandContext *pCommandContext,
[in] IWMSContext *pUserContext,
[in] IWMSContext *pPresContext,
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Creates a directory data container.")] HRESULT
CreateDataSourceDirectory(
[in] IWMSCommandContext *pCommandContext,
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Removes a directory data container.")] HRESULT
DeleteDirectory(
[in] LPWSTR pszContainerName,
[in] DWORD dwFlags,
[in] IWMSDataSourcePluginCallback *pCallback,
[in] QWORD qwContext
);
}; // IWMSDataSourcePlugin
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(E1CD3526-03D7-11d2-9EED-006097D2D7CF),
version(9.0),
helpstring("Provides methods to return the results of IWMSDataContainer method calls.")
]
interface IWMSDataSourcePluginCallback : IUnknown
{
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::OpenDataContainer method call.")] HRESULT
OnOpenDataContainer(
[in] HRESULT hr,
[in] IWMSDataContainer *pDataContainer,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::OpenDirectory method call.")] HRESULT
OnOpenDirectory(
[in] HRESULT hr,
[in] IWMSDirectory *pDirectory,
[in] QWORD qwContext
);
[helpstring("Reserved for future use.")] HRESULT
OnOpenPacketStreamDataContainer(
[in] HRESULT hr,
[in] IUnknown *pLiveDataContainer,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::DeleteDataContainer method call")] HRESULT
OnDeleteDataContainer(
[in] HRESULT hr,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::GetDataContainerVersion method call.")] HRESULT
OnGetDataContainerVersion(
[in] HRESULT hr,
[in] IWMSDataContainerVersion *pVersion,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::GetRootDirectories method call.")] HRESULT
OnGetRootDirectories(
[in] HRESULT hr,
[in] DWORD dwNumReturnedRoots,
[in] DWORD dwTotalNumRoots,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::CreateDirectory method call.")] HRESULT
OnCreateDirectory(
[in] HRESULT hr,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::DeleteDirectory method call.")] HRESULT
OnDeleteDirectory(
[in] HRESULT hr,
[in] QWORD qwContext
);
};
//////////////////////////////////////////////////////////////////////////////
typedef struct
{
LPOLESTR pstrName;
DWORD dwFlags;
QWORD qwSize;
} WMSDirectoryEntryInfo;
//////////////////////////////////////////////////////////////////////////////
//
// DATA CONTAINER
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(E6EE9A13-0FCC-11d2-9EEE-006097D2D7CF),
version(9.0),
helpstring("Provides methods to manage a data container.")
]
interface IWMSDataContainer : IUnknown
{
// Return IID_IWMSUnknownFormat if you don't know the format.
[helpstring("Retrieves a GUID that identifies the format of the data container.")] HRESULT
GetContainerFormat( [out] GUID *pFormat );
// Return a pointer to the data source plugin that controls this container.
[helpstring("Retrieves a pointer to the data source plug-in that created the data container.")] HRESULT
GetDataSourcePlugin( [out] IWMSDataSourcePlugin **ppDataSource );
[helpstring("Retrieves information about the data container.")] HRESULT
GetInfo(
[in] DWORD dwInfoValueId,
[in] IWMSDataContainerCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Reads data from the data container.")] HRESULT
Read(
[in] BYTE *pbBuffer,
[in] QWORD qwOffset, // Must be WMS_DATA_CONTAINER_NONSEEKABLE for a non-seekable device
[in] DWORD dwMaxDataSize,
[in] DWORD dwFlags,
[in] IWMSDataContainerCallback *pCallback,
[in] QWORD qwContext
);
// Non-writeable devices may always return an error.
[helpstring("Writes data from a buffer to the data container.")] HRESULT
Write(
[in] BYTE *pbBuffer,
[in] DWORD dwDataSize,
[in] QWORD qwWritePosition, // Must be WMS_DATA_CONTAINER_NONSEEKABLE for a non-seekable device
[in] IWMSDataContainerCallback *pCallback,
[in] QWORD qwContext
);
// There is no seek, Instead, the GetData methods specify the
// position.
// Get a natural sized block (the transfer size between disk
// and memory) that includes this position.
// Will be called before every call to Read or Write
[helpstring("Retrieves the optimal offset and buffer size, in bytes, to use for read and write access.")] HRESULT
GetTransferParameters(
[in] QWORD qwDesiredOffset,
[in] DWORD dwDesiredMinSize,
[in] DWORD dwDesiredMaxSize,
[out] QWORD *pqwOffset, // Will return WMS_DATA_CONTAINER_NONSEEKABLE for a non-seekable device
[out] DWORD *pdwSize,
[out] DWORD *pdwBufferAlignment
);
[helpstring("Reserved for future use.")] HRESULT
DoDataContainerExtendedCommand(
[in] LPWSTR szCommandName,
[in] IWMSCommandContext *pCommand,
[in] DWORD dwCallFlags,
[in] IWMSDataContainerCallback *pCallback,
[in] QWORD qwContext
);
[helpstring("Modifies data that is sent to a media parser after the media parser has converted it into one or more packet lists.")] HRESULT
FinishParsingPacketlist(
[in] IWMSPacketList *pPacketList
);
}; // IWMSDataContainer
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(2E34AB82-0D3D-11d2-9EEE-006097D2D7CF),
version(9.0),
helpstring("Provides methods to return the results of IWMSDataContainer method calls.")
]
interface IWMSDataContainerCallback : IUnknown
{
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::GetInfo method call to the server.")] HRESULT
OnGetInfo(
[in] HRESULT hr,
[in] DWORD dwFlags,
[in] QWORD qwInfoValue,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::Read method call.")] HRESULT
OnRead(
[in] HRESULT hr,
[in] DWORD dwActualBytesTransferred,
[in] DWORD dwChangeType,
[in] QWORD qwChangeParameter,
[in] QWORD qwContext
);
[helpstring("Called by a data source plug-in to return the result of the IWMSDataContainer::Write method call.")] HRESULT
OnWrite(
[in] HRESULT hr,
[in] DWORD dwActualBytesTransferred,
[in] QWORD qwContext
);
[helpstring("Reserved for future use.")] HRESULT
OnDoDataContainerExtendedCommand(
[in] HRESULT hr,
[in] QWORD qwContext
);
}; // IWMSDataContainerCallback
//////////////////////////////////////////////////////////////////////////////
//
// DIRECTORIES
//
// This is a snapshot of the current state of the directory, like a collection.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(6FA365E7-E8B9-437a-8C4B-6552DFBB0C57),
version(9.0),
helpstring("Provides methods for navigating the structure of a directory data container.")
]
interface IWMSDirectory : IUnknown
{
// Return a pointer to the data source plugin that controls this directory.
[helpstring("Retrieves a pointer to the data source plug-in that created the directory data container.")] HRESULT
GetDataSourcePlugin( [out] IWMSDataSourcePlugin **ppDataSource );
// Return the full path of this directory including the URL scheme
[helpstring("Retrieves the full path of the directory, including the URL scheme.")] HRESULT
GetName( [out] LPOLESTR *pstrValue );
// Enumerate children. First child index is 0, and this returns
// S_FALSE if dwIndex is too large.
[helpstring("Retrieves information about a specific child in a directory data container.")] HRESULT
GetChildInfo(
[in] DWORD dwIndex,
[out] WMSDirectoryEntryInfo *pInfo
);
};