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
- StrokeNode.cs
- XmlElement.cs
- TemplateField.cs
- FormViewPageEventArgs.cs
- DiscoveryDocumentSerializer.cs
- XmlSerializationWriter.cs
- ClientFormsIdentity.cs
- OutputCacheProfile.cs
- MouseActionValueSerializer.cs
- UserControl.cs
- FileInfo.cs
- TypeSource.cs
- IncrementalHitTester.cs
- XmlSchemaIdentityConstraint.cs
- ClientTargetSection.cs
- NetDataContractSerializer.cs
- WindowsFormsSectionHandler.cs
- DPTypeDescriptorContext.cs
- TemplateInstanceAttribute.cs
- QuaternionKeyFrameCollection.cs
- LocationReferenceEnvironment.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- BitmapSourceSafeMILHandle.cs
- PropertyValueUIItem.cs
- MethodRental.cs
- SafeFileMappingHandle.cs
- MdImport.cs
- EnumConverter.cs
- HtmlImage.cs
- AppSettingsReader.cs
- ListControl.cs
- DynamicArgumentDialog.cs
- DictionarySectionHandler.cs
- SHA384Managed.cs
- URLString.cs
- PathGeometry.cs
- DefaultPropertyAttribute.cs
- XmlWrappingReader.cs
- AsymmetricCryptoHandle.cs
- SafeArrayTypeMismatchException.cs
- XmlChoiceIdentifierAttribute.cs
- TypeSystem.cs
- URI.cs
- DataComponentMethodGenerator.cs
- RawMouseInputReport.cs
- XmlUtil.cs
- GrammarBuilderRuleRef.cs
- AssertFilter.cs
- RowCache.cs
- DoubleCollectionConverter.cs
- EntityType.cs
- BCryptHashAlgorithm.cs
- SerializerProvider.cs
- FontSourceCollection.cs
- EllipseGeometry.cs
- DataRelation.cs
- PreservationFileWriter.cs
- SQLBytes.cs
- XmlDocumentFragment.cs
- CompiledRegexRunnerFactory.cs
- NameTable.cs
- FrameworkContentElementAutomationPeer.cs
- loginstatus.cs
- TaskHelper.cs
- DbDataSourceEnumerator.cs
- DocumentsTrace.cs
- DialogResultConverter.cs
- EntityDataSourceContextCreatingEventArgs.cs
- SQLByteStorage.cs
- NotificationContext.cs
- RepeaterItemEventArgs.cs
- DescendantBaseQuery.cs
- MetadataItem.cs
- ServiceModelTimeSpanValidator.cs
- XmlSchemaImporter.cs
- SystemException.cs
- TrustLevelCollection.cs
- EdmSchemaError.cs
- PackageStore.cs
- SafeFileHandle.cs
- DrawingAttributes.cs
- XPathBinder.cs
- ModelItemCollection.cs
- SessionStateContainer.cs
- ApplyTemplatesAction.cs
- SessionSwitchEventArgs.cs
- Transform3D.cs
- SrgsElement.cs
- CodeMemberEvent.cs
- login.cs
- base64Transforms.cs
- ProgressBarBrushConverter.cs
- ExternalException.cs
- RegisteredHiddenField.cs
- _RequestCacheProtocol.cs
- ToolStripPanelRow.cs
- SiteMap.cs
- FileChangesMonitor.cs
- KeyInfo.cs
- XmlDownloadManager.cs