## CMediaControl Class

The CMediaControl class provides base class handling of the IDispatch methods of the dual-interface IMediaControl. It leaves as pure virtual the properties and methods of the IMediaControl interface.

Typically, the filter graph manager is the only object that implements the IMediaControl interface. (Filters implement the IMediaFilter interface, inherited by IBaseFilter, to receive control commands from the filter graph manager.) Therefore, this class library is of limited use to filter developers.

The CMediaControl::GetIDsOfNames, CMediaControl::GetTypeInfo, CMediaControl::GetTypeInfoCount, and CMediaControl::Invoke member functions are standard implementations of the IDispatch methods using the CBaseDispatch class (and a type library) to parse the commands and pass them to the pure virtual methods of the IMediaControl interface.

The IMediaControl methods, defined in control.odl, are left as pure virtual.

Member Functions

Name | Description
CMediaControl | Constructs a CMediaControl object.

Implemented INonDelegatingUnknown Methods

Name | Description
NonDelegatingQueryInterface | Returns a specified reference-counted interface.

Implemented IDispatch Methods

Name | Description
GetIDsOfNames | Maps a single member and an optional set of parameters to a corresponding set of integer dispatch identifiers (DISPIDs), which can be used during subsequent calls to the CMediaControl::Invoke method.
GetTypeInfo | Retrieves a type-information object, which can retrieve the type information for an interface.
GetTypeInfoCount | Retrieves the number of type-information interfaces provided by an object.
Invoke | Provides access to properties and methods exposed by an object.

###

CMediaControl::CMediaControl

CMediaControl Class

Constructs a CMediaControl object.

CMediaControl(
const TCHAR *pName,
LPUNKNOWN pUnk
);

##### Parameters

pName
  Name of the object for debugging purposes.
pUnk
  Pointer to the owner of this object.

##### Return Values

No return value.

##### Remarks

Allocate the pName parameter in static memory. This name appears on the debugging terminal upon creation and deletion of the object.

###

CMediaControl::GetIDsOfNames

CMediaControl Class

Maps a single member function and an optional set of parameters to a corresponding set of integer dispatch identifiers (DISPIDs), which can be used upon subsequent calls to the CMediaControl::Invoke member function.

HRESULT GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid
);

##### Parameters

riid
  Reference identifier. Reserved for future use. Must be NULL.
rgszNames
  Passed-in array of names to be mapped.
cNames
  Count of the names to be mapped.
lcid
  Locale context in which to interpret the names.
rgdispid
  Caller-allocated array, each element of which contains an ID corresponding to one of the names passed in the rgszNames array. The first element represents the member name; the subsequent elements represent each of the member's parameters.

##### Return Values

Returns one of the following values.

Value | Meaning
DISP_E_UNKNOWN_CLSID | The CLSID was not recognized.
DISP_E_UNKNOWNNAME | One or more of the names were not known. The returned DISPIDs contain DISPID_UNKNOWN for each entry that corresponds to an unknown name.
E_OUTOFMEMORY | Out of memory.
S_OK | Success.

###

CMediaControl::GetTypeInfo

CMediaControl Class

Retrieves a type-information object, which can retrieve the type information for an interface.

HRESULT GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo
);

##### Parameters

itinfo
  Type information to return. Pass zero to retrieve type information for the IDispatch implementation.
lcid
  Locale ID for the type information. An object might be able to return different type information for different languages. This is important for classes that support localized member names. For classes that do not support localized member names, this parameter can be ignored.
pptinfo
  Pointer to the type-information object requested.

##### Return Values

Returns an E_POINTER if pptinfo is invalid. Returns TYPE_E_ELEMENTNOTFOUND if itinfo is not zero. Returns S_OK if is successful. Otherwise, returns an HRESULT from one of the calls to retrieve the type. The HRESULT indicates the error and can be one of the following standard constants, or other values not listed:

Value | Meaning
E_FAIL | Failure.
E_POINTER | Null pointer argument.
E_INVALIDARG | Invalid argument.
S_OK or NOERROR | Success.

###

CMediaControl::GetTypeInfoCount

CMediaControl Class

Retrieves the number of type-information interfaces provided by an object.

HRESULT GetTypeInfoCount(
UINT * pctinfo
);

##### Parameters

pctinfo
  Pointer to the location that receives the number of type-information interfaces that the object provides. If the object provides type information, this number is 1; otherwise, the number is 0.

##### Return Values

Returns E_POINTER if pctinfo is invalid; otherwise, returns S_OK.

###

CMediaControl::Invoke

CMediaControl Class

Provides access to properties and methods exposed by an object.

HRESULT Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr
);

##### Parameters

dispidMember
  Identifier of the member. Use CMediaControl::GetIDsOfNames or the object's documentation to obtain the dispatch identifier.
riid
  Reserved for future use. Must be IID_NULL.
lcid
  Locale context in which to interpret arguments.
wFlags
  Flags describing the context of the CMediaControl::Invoke call.
pdispparams
  Pointer to a structure containing an array of arguments, an array of argument dispatch IDs for named arguments, and counts for number of elements in the arrays.
pvarResult
  Pointer to where the result is to be stored, or NULL if the caller expects no result.
pexcepinfo
  Pointer to a structure containing exception information.
puArgErr
  Index of the first argument, within the rgvarg array, that has an error.

##### Return Values

Returns DISP_E_UNKNOWNINTERFACE if riid is not IID_NULL. Returns one of the error codes from CMediaControl::GetTypeInfo if the call fails. Otherwise, returns the HRESULT from the call to IDispatch::Invoke.

###

CMediaControl::NonDelegatingQueryInterface

CMediaControl Class

Returns a specified reference-counted interface.

HRESULT NonDelegatingQueryInterface(
REFIID riid,
void **ppv
);

##### Parameters

riid
  Reference identifier.
ppv
  Pointer to the interface.

##### Return Values

Returns E_POINTER if ppv is invalid. Returns NOERROR if the query is successful or E_NOINTERFACE if it is not.

##### Remarks

Returns pointers to the IMediaControl and IUnknown interfaces by default. Override this member function to publish any additional interfaces implemented by the derived class.

This member function implements the INonDelegatingUnknown::NonDelegatingQueryInterface method.

© 1997 Microsoft Corporation. All rights reserved. Terms of Use.