Command Context

The command context contains a name-value pair that describes the requests issued by the client to the server and the response issued by the server to the client. The command context lasts only as long as the request or response that it describes is being performed or evaluated.

Each RTSP and HTTP header line gets an entry in the command context. In order to prevent name clashes between the header lines and additional command context properties that you define, properties always begin with @ because the @ character is not valid in header line names.

You must call the GetCommandRequest method on the IWMSCommandContext interface to retrieve an IWMSContext interface that contains a client request, and call the GetCommandResponse method to retrieve a server response. The following table identifies the context values defined by Windows Media Services.

Name

Value (data type)

Key

Description

@ STREAM SWITCH

IUnknown*

25

Contains an IUnknown pointer that you can use to retrieve a pointer to an IWMSStreamSwitchDescriptionList interface. You can call the GetAndQueryIUnknownValue method on the IWMSContext interface to retrieve a pointer to IWMSStreamSwitchDescriptionList.

@ TRANSPORT PROPERTIES

IUnknown*

13

Contains an IUnknown pointer that you can use to retrieve a pointer to an IWMSTransportProperties interface. You can call the GetAndQueryIUnknownValue method on the IWMSContext interface to retrieve a pointer to IWMSTransportProperties.

@WMS_COMMAND_CONTEXT_ACTIVE_ENTRY_URL

String

164

Contains the name of the playlist entry that is currently being played. This is available for the WMS_EVENT_PLAY and WMS_EVENT_STOP events.

@WMS_COMMAND_CONTEXT_BODY

String or IUnknown*

11

Contains the payload of the command. If the data type is IUnknown*, you can call the GetAndQueryIUnknownValue method on the IWMSContext interface to retrieve a pointer to INSSBuffer. This is used by logging plug-ins. For more information, see Creating Logging Plug-ins. It can also be used by control protocol plug-ins and is filled with a Windows Media file header when Windows Media Encoder pushes a distribution stream to the server. You cannot create a custom control protocol plug-in.

@WMS_COMMAND_CONTEXT_BODY_TYPE

String

12

Contains the MIME type of the payload in @WMS_COMMAND_CONTEXT_BODY

@WMS_COMMAND_CONTEXT_CACHE_MONIKER

String

87

Contains the cache moniker.

@WMS_COMMAND_CONTEXT_EVENT

long

52

Contains an ID for the specific event that occurred. This is a member of the WMS_EVENT_TYPE enumeration type.

@WMS_COMMAND_CONTEXT_EVENT_ADMINNAME

String

53

Contains the username of the administrator that caused the event. This value will be set only of the username can be retrieved. Typically, an event is raised when an administrator modifies the server.

@WMS_COMMAND_CONTEXT_EVENT_NEW_VALUE

VARIANT

65

Contains a new value. For example, if you change the name of a publishing point, the new value is set here and the previous value is set in the @WMS_COMMAND_CONTEXT_EVENT_OLD_VALUE context value.

@WMS_COMMAND_CONTEXT_EVENT_OLD_VALUE

VARIANT

64

Contains an old value. For example, if you change the name of a publishing point, the old value is set here and the new value is set in the @WMS_COMMAND_CONTEXT_EVENT_NEW_VALUE context value.

@WMS_COMMAND_CONTEXT_EVENT_PROPERTY_NAME

String

66

Contains the name of the name-value pair that changed in the IWMSNamedValues collection.

@WMS_COMMAND_CONTEXT_LIMIT_CLIENTID

long

55

Contains the ID of the client that was disconnected when a server or publishing point limit was hit. This number is randomly generated by the server and assigned to each connected client. It is also stored in the WMS_USER_ID context.

@WMS_COMMAND_CONTEXT_LIMIT_CLIENTIP

String

56

Contains the IP address of the client that was disconnected when a server or publishing point limit was hit.

@WMS_COMMAND_CONTEXT_LIMIT_NEW_VALUE

long

72

Contains a new value for a server or publishing point limit. When you change a limit, the new value is stored here and the previous value is stored in the WMS_COMMAND_CONTEXT_LIMIT_OLD_VALUE context value.

@WMS_COMMAND_CONTEXT_LIMIT_OLD_VALUE

long

57

Contains the old value for the server or publishing point limit. When you change a limit, the old value is stored here and the new value is stored in the WMS_COMMAND_CONTEXT_LIMIT_OLD_VALUE context value.

@WMS_COMMAND_CONTEXT_PLAYLIST_ENTRY_UNIQUE_RUNTIME_ID

long

100

Contains a unique identifier for the playlist element associated with the event. The server assigns a unique value to each element in a playlist when it creates an IWMSPlaylist object. If a playlist contains nested playlists, each nested object also has a unique ID.

@WMS_COMMAND_CONTEXT_PLAYLIST_OBJECT

IUnknown*

59

Contains an IUnknown pointer to the IWMSPlaylist object. You can call the GetAndQueryIUnknownValue method on the IWMSContext interface to retrieve a pointer to IWMSPlaylist.

@WMS_COMMAND_CONTEXT_PLUGIN_MONIKER

String

70

Contains the moniker display name of a plug-in.

@WMS_COMMAND_CONTEXT_PLUGIN_NAME

String

69

Contains the name of the plug-in object. This is the name that the creator of a plug-in specifies during registration. For more information, see Registering Plug-in Properties.

@WMS_COMMAND_CONTEXT_PUBPOINT_IDENTIFIER

String

40

Contains a GUID that uniquely identifies the publishing point. You can also retrieve the GUID by using the ID property on the IWMSPublishingPoint interface.

@WMS_COMMAND_CONTEXT_PUBPOINT_MONIKER

String

63

Contains the moniker display name for the IWMSPublishingPoint interface.

@WMS_COMMAND_CONTEXT_PUBPOINT_NAME

String

62

Contains the name of the IWMSPublishingPoint interface.

@WMS_COMMAND_CONTEXT_PUSH_CREATING_NEW_PUBLISHING_POINT

DWORD

99

Contains 1 (one) if a new publishing point was created by a push distribution from an encoder and 0 (zero) otherwise.

@WMS_COMMAND_CONTEXT_PUSH_DISTRIBUTION_TEMPLATE

String

97

Contains the name of the publishing point used as a template by the encoder.

@WMS_COMMAND_CONTEXT_RATE

double

21

Contains the rate at which the presentation is streamed. A value of 1 indicates normal forward speed. A value greater that 1 indicates that the content is being fast-forwarded. A value less than 0 indicates that the content is being rewound. For example, a value of 2 indicates that the content is being fast forwarded at twice the normal rate, and -2 indicates that it is being rewound at twice the normal rate. This value is copied into the WMS_PRESENT_PLAY_RATE context value.

@WMS_COMMAND_CONTEXT_DOWNLOAD_URL

String

88

Contains the URL from which content can be downloaded.

@WMS_COMMAND_CONTEXT_REDIRECT_URL

String

89

Contains a URL to redirect the client.

@WMS_COMMAND_CONTEXT_REQUEST_URL

String

105

Contains the URL requested by the client.

@WMS_COMMAND_CONTEXT_START_OFFSET

QWORD

16

Contains an offset from which the server should begin streaming the requested content. The type of offset varies depending on the value contained in @WMS_COMMAND_CONTEXT_START_OFFSET_TYPE. If that value is WMS_SEEK_TO_TIME, the offset is specified in milliseconds. If the value is WMS_SEEK_TO_PACKET, the offset is specified by a packet number. If the value is WMS_SEEK_TO_PLAYLIST_ENTRY, the offset is specified by an index into a playlist. If the value is WMS_SEEK_TO_BYTE_OFFSET, the offset is specified in bytes.

@WMS_COMMAND_CONTEXT_START_OFFSET_TYPE

DWORD

17

Contains information needed to interpret the @WMS_COMMAND_CONTEXT_START_OFFSET. This is one of the values in the WMS_SEEK_TYPE enumeration type.

@WMS_COMMAND_CONTEXT_URL

String

2

Contains the URL of the requested content that is associated with a WMS_EVENT_TYPE event.

@WMS_COMMAND_CONTEXT_URL_EXTRAINFO

String

7

Contains the URL extension of a client request. This includes the URL fragment and query string.

@WMS_COMMAND_CONTEXT_URL_HOSTNAME

String

4

Contains the host name of the URL.

@WMS_COMMAND_CONTEXT_URL_PATH

String

6

Contains the URL path.

@WMS_COMMAND_CONTEXT_URL_PORT

String

5

Contains the URL port.

@WMS_COMMAND_CONTEXT_URL_SCHEME

String

3

Contains the URL scheme. For example, file:// is a scheme type.

See Also (General)

See Also (Visual Basic .NET)

See Also (C#)

See Also (C++)