Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CompMod / Microsoft / Win32 / SafeHandles / SafeProcessHandle.cs / 1305376 / SafeProcessHandle.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeProcessHandle ** ** A wrapper for a process handle ** ** ===========================================================*/ using System; using System.Security; using System.Diagnostics; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using Microsoft.Win32; using Microsoft.Win32.SafeHandles; using System.Runtime.ConstrainedExecution; using System.Runtime.Versioning; namespace Microsoft.Win32.SafeHandles { [SuppressUnmanagedCodeSecurityAttribute] internal sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid { internal static SafeProcessHandle InvalidHandle = new SafeProcessHandle(IntPtr.Zero); // Note that OpenProcess returns 0 on failure internal SafeProcessHandle() : base(true) {} internal SafeProcessHandle(IntPtr handle) : base (true) { SetHandle(handle); } // Not currently called //[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] //internal SafeProcessHandle(IntPtr existingHandle, bool ownsHandle) : base(ownsHandle) { // SetHandle(existingHandle); //} [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] [ResourceExposure(ResourceScope.Machine)] internal static extern SafeProcessHandle OpenProcess(int access, bool inherit, int processId); internal void InitialSetHandle(IntPtr h){ Debug.Assert(base.IsInvalid, "Safe handle should only be set once"); base.handle = h; } override protected bool ReleaseHandle() { return SafeNativeMethods.CloseHandle(handle); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SafeProcessHandle ** ** A wrapper for a process handle ** ** ===========================================================*/ using System; using System.Security; using System.Diagnostics; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using Microsoft.Win32; using Microsoft.Win32.SafeHandles; using System.Runtime.ConstrainedExecution; using System.Runtime.Versioning; namespace Microsoft.Win32.SafeHandles { [SuppressUnmanagedCodeSecurityAttribute] internal sealed class SafeProcessHandle : SafeHandleZeroOrMinusOneIsInvalid { internal static SafeProcessHandle InvalidHandle = new SafeProcessHandle(IntPtr.Zero); // Note that OpenProcess returns 0 on failure internal SafeProcessHandle() : base(true) {} internal SafeProcessHandle(IntPtr handle) : base (true) { SetHandle(handle); } // Not currently called //[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)] //internal SafeProcessHandle(IntPtr existingHandle, bool ownsHandle) : base(ownsHandle) { // SetHandle(existingHandle); //} [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] [ResourceExposure(ResourceScope.Machine)] internal static extern SafeProcessHandle OpenProcess(int access, bool inherit, int processId); internal void InitialSetHandle(IntPtr h){ Debug.Assert(base.IsInvalid, "Safe handle should only be set once"); base.handle = h; } override protected bool ReleaseHandle() { return SafeNativeMethods.CloseHandle(handle); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToReply.cs
- TableRow.cs
- MessageDecoder.cs
- DataSet.cs
- XmlSchemaSet.cs
- WindowsListViewGroup.cs
- EntryWrittenEventArgs.cs
- StatusCommandUI.cs
- MouseGesture.cs
- KnownTypesProvider.cs
- safemediahandle.cs
- EventSinkHelperWriter.cs
- Byte.cs
- CalendarTable.cs
- FontFamilyIdentifier.cs
- SynchronizedInputHelper.cs
- AutoResetEvent.cs
- TextEffectCollection.cs
- _SSPIWrapper.cs
- LogicalExpr.cs
- FileStream.cs
- SpecialNameAttribute.cs
- KeyedCollection.cs
- Control.cs
- LoginUtil.cs
- CommandPlan.cs
- GridViewHeaderRowPresenter.cs
- OracleCommand.cs
- XamlClipboardData.cs
- MultilineStringConverter.cs
- ImplicitInputBrush.cs
- FilteredReadOnlyMetadataCollection.cs
- WebUtil.cs
- WindowsFormsHelpers.cs
- DecodeHelper.cs
- SqlStream.cs
- SystemDropShadowChrome.cs
- RootProfilePropertySettingsCollection.cs
- XmlTextWriter.cs
- MessageFault.cs
- StateMachine.cs
- HelpKeywordAttribute.cs
- DocumentOrderQuery.cs
- ContainerTracking.cs
- IImplicitResourceProvider.cs
- DocumentViewerBase.cs
- XmlSignatureProperties.cs
- XMLSyntaxException.cs
- MenuItemStyleCollection.cs
- MainMenu.cs
- Package.cs
- WindowsFormsLinkLabel.cs
- HMACRIPEMD160.cs
- safex509handles.cs
- HorizontalAlignConverter.cs
- CqlBlock.cs
- ObjectQueryExecutionPlan.cs
- ServerValidateEventArgs.cs
- StringDictionaryEditor.cs
- DataFormats.cs
- StylusCollection.cs
- CngProperty.cs
- TargetParameterCountException.cs
- ByeOperation11AsyncResult.cs
- SHA512.cs
- XsltArgumentList.cs
- DispatcherOperation.cs
- SqlNodeAnnotation.cs
- BaseCollection.cs
- UInt16Converter.cs
- TableLayoutPanelResizeGlyph.cs
- OperationFormatStyle.cs
- DataGridViewColumn.cs
- XmlWrappingReader.cs
- Renderer.cs
- AnnotationStore.cs
- FormsAuthenticationEventArgs.cs
- DataTrigger.cs
- CodeAttributeDeclarationCollection.cs
- FlowDocumentPaginator.cs
- HtmlTableCell.cs
- XmlSchemaComplexContentExtension.cs
- Underline.cs
- ILGenerator.cs
- BooleanProjectedSlot.cs
- SessionStateItemCollection.cs
- ListDictionary.cs
- Point.cs
- CorrelationValidator.cs
- HMACSHA256.cs
- ErrorFormatterPage.cs
- EntityContainerRelationshipSetEnd.cs
- XmlElementList.cs
- XmlQualifiedName.cs
- DownloadProgressEventArgs.cs
- InvalidCastException.cs
- MasterPageParser.cs
- CrossAppDomainChannel.cs
- UpdateProgress.cs
- WebServiceParameterData.cs