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
- OracleColumn.cs
- SerialPort.cs
- ExtenderProvidedPropertyAttribute.cs
- GlyphInfoList.cs
- LinkLabel.cs
- TriggerAction.cs
- CommandBinding.cs
- DataServiceResponse.cs
- ManipulationCompletedEventArgs.cs
- SHA384Managed.cs
- EventSinkHelperWriter.cs
- BuildManagerHost.cs
- XhtmlTextWriter.cs
- DetailsViewInsertEventArgs.cs
- RoutedUICommand.cs
- ManagedFilter.cs
- FormatPage.cs
- _NestedSingleAsyncResult.cs
- PagedDataSource.cs
- TypeName.cs
- EntityException.cs
- PerformanceCounterManager.cs
- SourceSwitch.cs
- EmbossBitmapEffect.cs
- UnaryNode.cs
- UshortList2.cs
- FrameworkContentElement.cs
- AnnotationAuthorChangedEventArgs.cs
- UpdateCommand.cs
- Mapping.cs
- PersistenceProviderFactory.cs
- GetCryptoTransformRequest.cs
- TimerElapsedEvenArgs.cs
- DesignTimeVisibleAttribute.cs
- Opcode.cs
- ResourceExpressionEditorSheet.cs
- GridViewSortEventArgs.cs
- RotateTransform3D.cs
- DynamicILGenerator.cs
- Invariant.cs
- commandenforcer.cs
- DesignRelation.cs
- LambdaCompiler.Expressions.cs
- followingsibling.cs
- ConnectionDemuxer.cs
- RoleExceptions.cs
- SqlDataSourceCommandEventArgs.cs
- BindingSource.cs
- TrustManager.cs
- TreeNode.cs
- HwndStylusInputProvider.cs
- SafePointer.cs
- XPathBinder.cs
- DisableDpiAwarenessAttribute.cs
- IsolatedStorageFileStream.cs
- FlagsAttribute.cs
- QuaternionAnimationBase.cs
- ImageSourceTypeConverter.cs
- SystemColorTracker.cs
- DataAccessor.cs
- TypeUsageBuilder.cs
- ObjectListField.cs
- RequestSecurityTokenResponse.cs
- TimeZone.cs
- TemplatedAdorner.cs
- DebugView.cs
- ProgressBarRenderer.cs
- ReadOnlyMetadataCollection.cs
- XmlDigitalSignatureProcessor.cs
- Stream.cs
- DynamicActivityTypeDescriptor.cs
- Double.cs
- ServicePoint.cs
- GuidConverter.cs
- tooltip.cs
- PageThemeCodeDomTreeGenerator.cs
- ImportContext.cs
- SourceFileInfo.cs
- ObservableCollection.cs
- XmlBinaryReader.cs
- GenericNameHandler.cs
- OledbConnectionStringbuilder.cs
- AdRotatorDesigner.cs
- AuthStoreRoleProvider.cs
- QueueProcessor.cs
- COAUTHIDENTITY.cs
- MultiBinding.cs
- QuaternionAnimation.cs
- TraceContextRecord.cs
- Label.cs
- TargetFrameworkAttribute.cs
- ConnectionsZone.cs
- ShortcutKeysEditor.cs
- LateBoundBitmapDecoder.cs
- XhtmlBasicTextViewAdapter.cs
- ContextProperty.cs
- Int16Storage.cs
- MessageHeaders.cs
- DES.cs
- DataReaderContainer.cs