IWMSPlaylist.CueStream (Visual Basic .NET)
The CueStream method prepares the next stream in the queue.
HRESULT CueStream(
IXMLDOMElement* pPlaylistEntry
);
Arguments
pPlaylistEntry |
[in] Pointer to a playlist entry object. |
Return Value
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
Return code |
Number |
Meaning |
---|---|---|
E_INVALIDARG |
0x80070057 |
pPlaylistEntry is a NULL pointer argument. |
NS_E_PLAYLIST_ENTRY_ALREADY_PLAYING |
0xC00D14B4L |
pPlaylistEntry is already playing. |
NS_E_PLAYLIST_UNSUPPORTED_ENTRY |
0xC00D14B7L |
pPlaylistEntry is not a media element. |
Remarks
The IWMSPlaylist::get_IsStreamCued method can be used to determine whether the stream was successfully cued. The get_IsStreamCued method retrieves a Boolean value indicating whether a specific playlist element has been initialized and is ready to stream. This method is asynchronous, so an immediate call to get_IsStreamCued may return false even though CueStream returned S_OK. To be notified when the stream is actually cued, the application can catch the WMS_EVENT_PLAYLIST_CUE event.
Example
#include <windows.h>
#include <atlbase.h> // Includes CComVariant.
#include "wmsserver.h"
// Declare variables and interfaces.
IWMSServer *pServer;
IWMSPlayers *pPlayers;
IWMSPlayer *pPlayer;
IWMSPlaylist *pPlaylist;
IXMLDOMElement *pCurPlaylistEntry;
IXMLDOMElement *pPlaylistEntry;
HRESULT hr;
VARIANT_BOOL bVal;
CComVariant varIndex;
long lCount;
// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
NULL,
CLSCTX_ALL,
IID_IWMSServer,
(void **)&pServer);
if (FAILED(hr)) goto EXIT;
// Retrieve a pointer to an IWMSPlayers interface
// and retrieve the total count of current connections.
hr = pServer->get_Players(&pPlayers);
if (FAILED(hr)) goto EXIT;
hr = pPlayers->get_Count(&lCount);
if (FAILED(hr)) goto EXIT;
// Retrieve information about each requested playlist.
for (long x = 0; x < lCount; x++)
{
varIndex = x;
hr = pPlayers->get_Item(varIndex, &pPlayer);
if (FAILED(hr)) goto EXIT;
// Retrieve the playlist that was requested
// by the client if one exists.
hr = pPlayer->get_RequestedPlaylist(&pPlaylist);
if (FAILED(hr)) goto EXIT;
// Retrieve information about the current playlist entry.
hr = pPlaylist->get_CurrentPlaylistEntry(&pPlaylistEntry);
if (FAILED(hr)) goto EXIT;
// Retrieve information about each playlist entry.
while (pPlaylistEntry != NULL)
{
pCurPlaylistEntry = pPlaylistEntry;
// Retrieve the next playlist entry.
hr = pPlaylist->get_CallerEntry(pCurPlaylistEntry,
&pPlaylistEntry);
if (FAILED(hr)) goto EXIT;
// Retrieve a Boolean value that indicates whether this
// playlist entry is cued.
hr = pPlaylist->get_IsStreamCued(pPlaylistEntry, &bVal);
if (FAILED(hr)) goto EXIT;
// Cue the playlist entry if it is not yet cued.
if (bVal == VARIANT_FALSE)
hr = pPlaylist->CueStream(pPlaylistEntry);
if (FAILED(hr)) goto EXIT;
}
// Release temporary COM objects.
pPlayer->Release();
pPlaylist->Release();
pPlaylistEntry->Release();
pCurPlaylistEntry->Release();
}
EXIT:
// TODO: Release temporary COM objects and uninitialize COM.
Requirements
Header: wmsserver.h
Library: WMSServerTypeLib.dll
Platform: Windows Server 2003 family, Windows Server 2008 family.