Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / InputProviderSite.cs / 1305600 / InputProviderSite.cs
using System;
using System.Security;
using System.Security.Permissions;
using MS.Internal;
using MS.Internal.PresentationCore; // SecurityHelper
using MS.Win32;
using System.Windows.Threading;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Input
{
///
/// The object which input providers use to report input to the input
/// manager.
///
internal class InputProviderSite : IDisposable
{
///
/// Critical: This code creates critical data in the form of InputManager and InputProvider
///
[SecurityCritical]
internal InputProviderSite(InputManager inputManager, IInputProvider inputProvider)
{
_inputManager = new SecurityCriticalDataClass(inputManager);
_inputProvider = new SecurityCriticalDataClass(inputProvider);
}
///
/// Returns the input manager that this site is attached to.
///
///
/// Critical: We do not want to expose the Input manager in the SEE
/// TreatAsSafe: This code has a demand in it
///
public InputManager InputManager
{
[SecurityCritical,SecurityTreatAsSafe]
get
{
SecurityHelper.DemandUnrestrictedUIPermission();
return CriticalInputManager;
}
}
///
/// Returns the input manager that this site is attached to.
///
///
/// Critical: We do not want to expose the Input manager in the SEE
///
internal InputManager CriticalInputManager
{
[SecurityCritical]
get
{
return _inputManager.Value;
}
}
///
/// Unregisters this input provider.
///
///
/// Critical: This code accesses critical data (InputManager and InputProvider).
/// TreatAsSafe: The critical data is not exposed outside this call
///
[SecurityCritical,SecurityTreatAsSafe]
public void Dispose()
{
GC.SuppressFinalize(this);
if (!_isDisposed)
{
_isDisposed = true;
if (_inputManager != null && _inputProvider != null)
{
_inputManager.Value.UnregisterInputProvider(_inputProvider.Value);
}
_inputManager = null;
_inputProvider = null;
}
}
///
/// Returns true if the CompositionTarget is disposed.
///
public bool IsDisposed
{
get
{
return _isDisposed;
}
}
///
/// Reports input to the input manager.
///
///
/// Whether or not any event generated as a consequence of this
/// event was handled.
///
///
/// Critical:This code is critical and can be used in event spoofing. It also accesses
/// InputManager and calls into ProcessInput which is critical.
///
//
[SecurityCritical ]
[UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted = true)]
public bool ReportInput(InputReport inputReport)
{
if(IsDisposed)
{
throw new ObjectDisposedException(SR.Get(SRID.InputProviderSiteDisposed));
}
bool handled = false;
InputReportEventArgs input = new InputReportEventArgs(null, inputReport);
input.RoutedEvent=InputManager.PreviewInputReportEvent;
if(_inputManager != null)
{
handled = _inputManager.Value.ProcessInput(input);
}
return handled;
}
private bool _isDisposed;
///
/// Critical: This object should not be exposed in the SEE as it can be
/// used for input spoofing
///
private SecurityCriticalDataClass _inputManager;
///
/// Critical: This object should not be exposed in the SEE as it can be
/// used for input spoofing
///
private SecurityCriticalDataClass _inputProvider;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DoWorkEventArgs.cs
- SocketCache.cs
- MyContact.cs
- SqlParameterCollection.cs
- DecimalFormatter.cs
- UnmanagedBitmapWrapper.cs
- AmbiguousMatchException.cs
- CommandHelpers.cs
- DataExpression.cs
- TreeNode.cs
- ListViewDeleteEventArgs.cs
- ForceCopyBuildProvider.cs
- DayRenderEvent.cs
- VariantWrapper.cs
- ScriptResourceInfo.cs
- X509SubjectKeyIdentifierClause.cs
- ResourcePermissionBaseEntry.cs
- Image.cs
- OpenTypeCommon.cs
- DataColumnMappingCollection.cs
- DateTimeHelper.cs
- ParameterCollection.cs
- RepeaterItemCollection.cs
- LogSwitch.cs
- BindingMAnagerBase.cs
- StringOutput.cs
- XmlLinkedNode.cs
- DataGridViewSelectedRowCollection.cs
- XmlException.cs
- RTLAwareMessageBox.cs
- HtmlInputRadioButton.cs
- PerspectiveCamera.cs
- DomainUpDown.cs
- FileLevelControlBuilderAttribute.cs
- GridViewUpdatedEventArgs.cs
- SqlUdtInfo.cs
- TransactionOptions.cs
- InputLanguageManager.cs
- TextFormatterHost.cs
- Floater.cs
- Button.cs
- ProfilePropertyNameValidator.cs
- ValidationEventArgs.cs
- HttpPostProtocolReflector.cs
- GridViewPageEventArgs.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SortQuery.cs
- ObjectListDataBindEventArgs.cs
- SecurityContext.cs
- OleDbConnectionInternal.cs
- ExpressionVisitorHelpers.cs
- ResourcePermissionBase.cs
- DataException.cs
- SymbolTable.cs
- SubpageParaClient.cs
- GridViewColumn.cs
- SafeSecurityHelper.cs
- UInt32Storage.cs
- BamlLocalizabilityResolver.cs
- SingleStorage.cs
- CLSCompliantAttribute.cs
- NamedObject.cs
- MDIWindowDialog.cs
- SortDescription.cs
- EncryptionUtility.cs
- UnknownWrapper.cs
- EntityDataSourceSelectingEventArgs.cs
- UserNamePasswordValidator.cs
- HtmlTitle.cs
- DCSafeHandle.cs
- PasswordBox.cs
- FtpWebRequest.cs
- StyleCollectionEditor.cs
- SchemaDeclBase.cs
- ConfigurationSettings.cs
- MetadataProperty.cs
- Comparer.cs
- BooleanProjectedSlot.cs
- XMLDiffLoader.cs
- TextRange.cs
- GatewayIPAddressInformationCollection.cs
- StyleBamlRecordReader.cs
- TraceContext.cs
- Thickness.cs
- MaterialGroup.cs
- HtmlTitle.cs
- DataTableReader.cs
- QueueProcessor.cs
- CaseStatementSlot.cs
- TypeRestriction.cs
- WindowsScrollBar.cs
- OutputWindow.cs
- XmlElementAttribute.cs
- DrawingImage.cs
- ThousandthOfEmRealPoints.cs
- HtmlTextArea.cs
- FragmentNavigationEventArgs.cs
- CssClassPropertyAttribute.cs
- QuotedStringFormatReader.cs
- MDIControlStrip.cs