IWMSEventAuthorizationCallback.OnAuthorizeEvent (Visual Basic .NET)
The OnAuthorizeEvent method returns the result of the IWMSEventAuthorizationPlugin.AuthorizeEvent method call to the server.
IWMSEventAuthorizationCallback.OnAuthorizeEvent( hr As Int32,
Context As Object
)
Arguments
[in] Int32 containing the result of the call to AuthorizeEvent. |
|
Object containing a value defined by the server to identify which call to AuthorizeEvent the plug-in is responding to when it calls OnAuthorizeEvent. You must pass this value back unaltered. |
Return Value
This method does not return a value. If the plug-in uses the IWMSEventLogIWMSEventLog Object (Visual Basic .NET) to log error information, it is recommended that it send NS_E_PLUGIN_ERROR_REPORTED (0xC00D157D) to the server in the hr parameter. 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 object to log custom error information to the Windows Event Viewer, sending NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about plug-in error information, see Identifying Plug-in Errors.
If this method fails, it throws an exception.
Number |
Description |
---|---|
0x80070057 |
Context is null. |
Example
The following example illustrates a possible implementation of the AuthorizeEvent method for an access control list (ACL) authorization plug-in. OnAuthorizeEvent is called at the bottom of the example.
Public Sub AuthorizeEvent( _
ByRef pEvent As WMS_EVENT, ByVal pUserCtx As IWMSContext, _
ByVal pPresentationCtx As IWMSContext, _
ByVal pCommandCtx As IWMSCommandContext, _
ByVal pCallback As IWMSEventAuthorizationCallback, _
ByVal Context As Object) _
Implements IWMSEventAuthorizationPlugin.AuthorizeEvent
Dim wmsAccess As WMS_ACCESS_CONTROL = _
WMS_ACCESS_CONTROL.WMS_ACL_DENY_ALL
Dim strUser As String = ""
' This variable uses numerical values to
' represent HRESULT error codes.
Dim hr As Integer = 0
' Switch on the event type.
Select Case (pEvent.Type)
Case WMS_EVENT_TYPE.WMS_EVENT_DESCRIBE, _
WMS_EVENT_TYPE.WMS_EVENT_OPEN, _
WMS_EVENT_TYPE.WMS_EVENT_GET_PARAMETER, _
WMS_EVENT_TYPE.WMS_EVENT_VALIDATE_PUSH_DISTRIBUTION
Try
' Retrieve the user name from the user context.
pUserCtx.GetStringValue(WMSDefines.WMS_USER_NAME, _
WMSDefines.WMS_USER_NAME_ID, _
strUser, _
0)
If strUser <> "" Then
' Determine whether the user is in the access
' control list, and what rights the user has.
' The GetUserAccess funtion is user-defined.
m_AccessControl.GetUserAccess(strUser, ByRef _
wmsAccess)
If pEvent.Type = _
WMS_EVENT_TYPE.WMS_EVENT_OPEN Or _
pEvent.Type = WMS_EVENT_TYPE.WMS_EVENT_DESCRIBE _
Or pEvent.Type = _
WMS_EVENT_TYPE.WMS_EVENT_GET_PARAMETER Then
' Check to see whether read access is
' permitted.
If WMS_ACCESS_CONTROL.WMS_ACL_DENY_READ = _
wmsAccess Then
' User was denied read access.
' Pass the callback method the integer
' value of E_ACCESSDENIED.
hr = &H80070005
ElseIf WMS_ACCESS_CONTROL.WMS_ACL_ALLOW_READ = _
wmsAccess Then
' User was granted read access.
hr = 0
Else
' User was neither granted nor denied read
' access. Pass the callback method the
' integer value of E_FAIL.
hr = &H80004005
End If
End If
Else
' Check whether write access is permitted.
If WMS_ACCESS_CONTROL.WMS_ACL_DENY_WRITE = _
wmsAccess Then
' User was denied read access.
' Pass the callback method the integer
' value of E_ACCESSDENIED.
hr = &H80070005
ElseIf WMS_ACCESS_CONTROL.WMS_ACL_ALLOW_WRITE = _
wmsAccess Then
' User was granted write access.
hr = 0
Else
' User was neither granted nor denied read
' access. Pass the callback method the
' integer value of E_FAIL.
hr = &H80004005
End If
End If
' Null out string containing user name.
strUser = ""
Catch e As Exception
' TODO: Handle exceptions.
Finally
' Report the results of the authorization
' challenge back to the server.
pCallback.OnAuthorizeEvent(hr, Context)
End Try
End Select
End Sub
Requirements
Reference: Add a reference to Microsoft.WindowsMediaServices.
Namespace: Microsoft.WindowsMediaServices.Interop.
Assembly: Microsoft.WindowsMediaServices.dll.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.