IWMSEventNotificationPlugin::OnEvent
Previous | Next |
IWMSEventNotificationPlugin::OnEvent
The server calls the OnEvent method when an event subscribed to by the plug-in occurs.
Syntax
HRESULT OnEvent( WMS_EVENT* pEvent, IWMSContext* pUserCtx, IWMSContext* pPresentationCtx, IWMSCommandContext* pCommandCtx );
Parameters
pEvent
[in] Pointer to a WMS_EVENT structure containing the event.
pUserCtx
[in] Pointer to an IWMSContext interface containing the user context.
pPresentationCtx
[in] Pointer to an IWMSContext interface containing the presentation context.
pCommandCtx
[in] Pointer to an IWMSCommandContext interface containing the command context.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code. If the plug-in uses the IWMSEventLog interface to log error information directly to the Windows Event Viewer, it is recommended that it return NS_E_PLUGIN_ERROR_REPORTED. Typically, the server attempts to make plug-in error information available to the server object model, the Windows Event Viewer, and the troubleshooting list in the details pane of the Windows Media Services MMC. However, if the plug-in uses the IWMSEventLog interface to send custom error information to the Windows Event Viewer, returning NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about retrieving plug-in error information, see Identifying Plug-in Errors.
Example Code
The following example illustrates a possible implementation of the OnEvent method for a logging plug-in.
STDMETHODIMP CWMSLoggingPlugin::OnEvent( WMS_EVENT * pEvent, IWMSContext * pUserCtx, IWMSContext * pPresentationCtx, IWMSCommandContext * pCommandCtx ) { HRESULT hr = S_OK; IWMSContext *pCtx = NULL; // Process a requested name change for the publishing point. if( WMS_EVENT_PUBLISHING_POINT == pEvent->Type ) { LONG lSubEvent = -1; IWMSContext * pCtx = NULL; // Use the command context to retrieve a command request context. hr = pCommandCtx->GetCommandRequest( &pCtx ); // Retrieve the request from the request context. hr = pCtx->GetLongValue( WMS_COMMAND_CONTEXT_EVENT, WMS_COMMAND_CONTEXT_EVENT_ID, &lSubEvent, 0 ); // If the client did not request a publishing point // name change, then return. if( FAILED( hr ) || ( WMS_EVENT_PUBLISHING_POINT_NAME_CHANGE != lSubEvent ) ) { hr = pCtx->Release(); return( S_OK ); } // Process the requested name change. The // ProcessPubPtNameChange() function is user-defined. hr = ProcessPubPtNameChange(); hr = pCtx->Release(); return( hr ); } // TODO: Process remaining cases. }
Requirements
Header: event.h.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.
See Also
- Creating Event Notification Plug-ins
- Event Notification Plug-in Sample
- IWMSCommandContext Interface
- IWMSContext Interface
- IWMSEventNotificationPlugin Interface
- WMS_EVENT** **
Previous | Next |