Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / Win32KeyboardDevice.cs / 1305600 / Win32KeyboardDevice.cs
using System.Collections; using System.Windows; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using System.Windows.Media; using MS.Win32; // VK translation. using System; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The Win32KeyboardDevice class implements the platform specific /// KeyboardDevice features for the Win32 platform /// internal sealed class Win32KeyboardDevice : KeyboardDevice { ////// /// /// /// ////// Critical: This code creates critical data(_tsfManager,_textcompositionManager) and stores critical data (inputManager) /// TreatAsSafe: Although it creates critical data there are demand on the critical data and the constructor is safe /// [SecurityCritical,SecurityTreatAsSafe] internal Win32KeyboardDevice(InputManager inputManager) : base(inputManager) { } ////// Gets the current state of the specified key from the device from the underlying system /// /// /// Key to get the state of /// ////// The state of the specified key /// ////// Critical: Makes calls to UnsafeNativeMethods (GetKeyState) /// TreatAsSafe: We will not expose the state of keys in /// partially trusted AppDomains unless a WPF /// window in this AppDomain has focus. An /// exception is made for modifier keys. /// [SecurityCritical, SecurityTreatAsSafe] protected override KeyStates GetKeyStatesFromSystem(Key key) { KeyStates keyStates = KeyStates.None; bool getKeyStatesFromSystem = false; if(IsActive) { // Our keyboard device is only active if some WPF window in // this AppDomain has focus. It is always safe to return // the state of keys. getKeyStatesFromSystem = true; } else if (SecurityHelper.AppDomainGrantedUnrestrictedUIPermission) { // This is a trusted AppDomain, so we are willing to expose // the state of keys regardless of whether or not a WPF // window has focus. This is important for child HWND // hosting scenarios. getKeyStatesFromSystem = true; } else { // Security Mitigation: // No WPF window has focus in this AppDomain, and this is a // partially-trusted AppDomain, so we do not generally want // to expose the state of keys. However, we make an exception // for modifier keys, as they are considered safe. switch (key) { case Key.LeftAlt: case Key.RightAlt: case Key.LeftCtrl: case Key.RightCtrl: case Key.LeftShift: case Key.RightShift: getKeyStatesFromSystem = true; break; } } if (getKeyStatesFromSystem) { int virtualKeyCode = KeyInterop.VirtualKeyFromKey(key); int nativeKeyState; nativeKeyState = UnsafeNativeMethods.GetKeyState(virtualKeyCode); if( (nativeKeyState & 0x00008000) == 0x00008000 ) keyStates |= KeyStates.Down; if( (nativeKeyState & 0x00000001) == 0x00000001 ) keyStates |= KeyStates.Toggled; } return keyStates; } } } // 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
- PlaceHolder.cs
- ControlLocalizer.cs
- SerializationEventsCache.cs
- ConfigXmlComment.cs
- FieldToken.cs
- ResXFileRef.cs
- ObjectDataSourceDisposingEventArgs.cs
- LinqExpressionNormalizer.cs
- Method.cs
- SplayTreeNode.cs
- WebAdminConfigurationHelper.cs
- SelectionRangeConverter.cs
- PartitionResolver.cs
- InheritanceService.cs
- Stream.cs
- ipaddressinformationcollection.cs
- PrintDialogException.cs
- SoapAttributeOverrides.cs
- MarshalByRefObject.cs
- RtfToXamlReader.cs
- XamlSerializerUtil.cs
- ContainerAction.cs
- LocalFileSettingsProvider.cs
- SapiRecoContext.cs
- OracleParameterBinding.cs
- Compiler.cs
- CopyAction.cs
- ListView.cs
- DocumentViewerConstants.cs
- AttributeCollection.cs
- SiteOfOriginPart.cs
- UiaCoreApi.cs
- SQLInt16Storage.cs
- ScriptServiceAttribute.cs
- HostedTransportConfigurationBase.cs
- JsonObjectDataContract.cs
- WizardStepBase.cs
- ImageListUtils.cs
- PropertyGridEditorPart.cs
- PlatformCulture.cs
- QuerySettings.cs
- WebPartChrome.cs
- EventNotify.cs
- UnitControl.cs
- DropDownHolder.cs
- login.cs
- CorePropertiesFilter.cs
- PathSegmentCollection.cs
- IdentifierService.cs
- BaseCodeDomTreeGenerator.cs
- ImageListStreamer.cs
- CopyCodeAction.cs
- securestring.cs
- CompositeDataBoundControl.cs
- UnauthorizedAccessException.cs
- VectorAnimation.cs
- SqlServices.cs
- XmlSchemaType.cs
- SchemaSetCompiler.cs
- DataColumnPropertyDescriptor.cs
- ResourceAttributes.cs
- SqlWriter.cs
- ToolboxItem.cs
- SharedPerformanceCounter.cs
- SecureConversationSecurityTokenParameters.cs
- CodeExpressionStatement.cs
- BaseHashHelper.cs
- PerformanceCounterPermissionAttribute.cs
- CodeNamespaceImport.cs
- File.cs
- HtmlElementErrorEventArgs.cs
- XDRSchema.cs
- XPathNavigator.cs
- GenericTextProperties.cs
- smtpconnection.cs
- XmlHierarchyData.cs
- TextEffectCollection.cs
- DynamicResourceExtensionConverter.cs
- SQLDouble.cs
- CounterSample.cs
- CanExecuteRoutedEventArgs.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- ScriptingAuthenticationServiceSection.cs
- WorkflowNamespace.cs
- SelectionListDesigner.cs
- ParseNumbers.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- UIntPtr.cs
- OrthographicCamera.cs
- PasswordRecovery.cs
- XamlFigureLengthSerializer.cs
- RegexCompiler.cs
- IISMapPath.cs
- ObjectListDesigner.cs
- CommentEmitter.cs
- Mutex.cs
- RegisteredDisposeScript.cs
- SessionStateSection.cs
- Registry.cs
- KeyValuePair.cs