Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
This interface is available only on Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; and Windows Server 2008.
The IWMSContext interface provides methods for retrieving, adding, or updating a context. A context is a collection of name-value pairs or properties used by the server to store information. The server creates and maintains the contexts that are described in the following sections.
Section |
Description |
|---|---|
Contains information about the file used to archive a presentation. |
|
Contains information about the content stored in a cache. |
|
Contains information about requests issued by the client to the server and the responses issued by the server to the client. |
|
Contains descriptive information about an item of content such as the name of the author and the genre. |
|
Contains information about the presentation sent to a client. |
|
Contains information about the server. |
|
Contains information about the client |
You use contexts when creating custom plug-ins. The server creates and populates the preceding contexts and passes pointers to them when it calls interfaces on your plug-in. However, you can also create temporary contexts inside of your plug-in or add temporary values to the existing contexts created by the server. The server, of course, cannot use these custom contexts and values, but your plug-in can use them to persist information.
The public context properties are identified in WmsContextNames.h. The file contains a macro, DEFINE_NAME_AND_HINT, that creates an internal table that associates the name of a property with an enumeration value and a key. When specifying or retrieving a public context property, it is recommended that you use the enumeration value and key. The key, called a hint in this document, enables you to access context properties more efficiently. The following example uses a pointer to the server context to retrieve a pointer to the IWMSServerIWMSServer Interface and demonstrates how to use the enumeration value, WMS_SERVER, and the hint, WMS_SERVER_ID. A hint always consists of the enumeration value followed by _ID.
if (NULL != pServerContext)
{
hr = pServerContext->GetAndQueryIUnknownValue(
WMS_SERVER,
WMS_SERVER_ID,
IID_IWMSServer,
(IUnknown**)&pServerUnk,
0 );
if (FAILED(hr)) goto EXIT;
}
EXIT:
// TODO: Release temporary objects.
A plug-in can also add temporary properties to an existing context. The following example illustrates how to add a pointer to a user-defined object, CCacheEntry, to the presentation context. When you are adding a custom property to a context, it is recommended that you use the WMS_CONTEXT_NO_NAME_HINT value, defined in WMS_CONTEXT_HINT_CONSTANTS, to indicate that there is no hint associated with the specified name. Also, you must use the value, WMS_CONTEXT_SET_PROPERTY_NAME_BY_VALUE, defined in WMS_CONTEXT_OPTIONS, to indicate that you are not passing the name by reference.
if (NULL != pPresentationContext)
{
hr = pPresentationContext->SetIUnknownValue(
L"CacheEntry",
WMS_CONTEXT_NO_NAME_HINT,
pCacheEntry,
WMS_CONTEXT_SET_PROPERTY_NAME_BY_VALUE
);
if (FAILED(hr)) goto EXIT;
}
EXIT:
// TODO: Release temporary objects.
Finally, you can use the IWMSClassObjectIWMSClassObject Interface to create a custom context. The server sends your plug-in a pointer to an IWMSClassObject interface when it calls the IWMSBasicPlugin::InitializePlugin method. The following example illustrates how to use the pointer to create a content description context.
IWMSContext* pIContext = NULL;
if (NULL != pClassFactory)
{
hr = pClassFactory->AllocIWMSContext(
IID_IWMSContext,
WMS_CONTENT_DESCRIPTION_CONTEXT_TYPE,
NULL,
( void ** ) &pIContext);
if (FAILED(hr)) goto EXIT;
}
EXIT:
// TODO: Release temporary objects.
In addition to the methods inherited from IUnknown, the IWMSContext interface exposes the following methods.
Method |
Description |
|---|---|
CopyValues |
Copies the specified properties from one context to another. |
GetAndQueryIUnknownValue |
Retrieves an IUnknown pointer and calls QueryInterface to retrieve a pointer to the specified interface. |
GetArrayValue |
Retrieves a pointer to a SAFEARRAY of BSTR values. |
GetContextType |
Retrieves an enumeration value that indicates the context type. |
GetDateValue |
Retrieves a DATE value from the context. |
GetIndexedValue |
Retrieves a specific name-value pair from the context by index. |
GetIUnknownValue |
Retrieves an IUnknown value for the specified context. |
GetLongValue |
Retrieves a long value for the specified context. |
GetQwordValue |
Retrieves a QWORD value for the specified context. |
GetStringValue |
Retrieves a BSTR value for the specified context. |
GetValue |
Retrieves a VARIANT containing a value. |
GetValueCount |
Retrieves the number of values in the context. |
RemoveAllValues |
Removes all name-value pairs from a context. |
RemoveValue |
Removes a specific name-value from a context. |
SetArrayValue |
Specifies a pointer to a SAFEARRAY value. |
SetDateValue |
Specifies a DATE value for the context. |
SetIUnknownValue |
Specifies an IUnknown value for the context. |
SetLongValue |
Specifies a long value for the context. |
SetQwordValue |
Specifies a QWORD value for the context. |
SetStringValue |
Specifies a String value for the context. |
SetValue |
Specifies a context value. |