Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / CompMod / Microsoft / Win32 / SafeHandles / SafeProcessHandle.cs / 1 / 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;
namespace Microsoft.Win32.SafeHandles {
[HostProtectionAttribute(MayLeakOnAbort = true)]
[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) {}
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=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)]
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;
namespace Microsoft.Win32.SafeHandles {
[HostProtectionAttribute(MayLeakOnAbort = true)]
[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) {}
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=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)]
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
- OdbcInfoMessageEvent.cs
- ResourcePermissionBase.cs
- SafeBitVector32.cs
- HttpWebRequest.cs
- login.cs
- WindowsSpinner.cs
- RawTextInputReport.cs
- CollectionEditVerbManager.cs
- TextTreeInsertElementUndoUnit.cs
- DesignerRegionCollection.cs
- LayoutTableCell.cs
- Separator.cs
- DynamicScriptObject.cs
- UnionQueryOperator.cs
- VisualTreeUtils.cs
- DataMisalignedException.cs
- DataGridViewMethods.cs
- DefaultValueTypeConverter.cs
- HashCodeCombiner.cs
- FolderNameEditor.cs
- MenuItemAutomationPeer.cs
- RotateTransform.cs
- KeyConverter.cs
- VScrollBar.cs
- CacheForPrimitiveTypes.cs
- XmlSchemaSimpleContentRestriction.cs
- DesignerLoader.cs
- GlyphingCache.cs
- MessageDesigner.cs
- SelectorItemAutomationPeer.cs
- ParallelRangeManager.cs
- ObfuscationAttribute.cs
- XPathBinder.cs
- DllNotFoundException.cs
- TransformCollection.cs
- WindowsAuthenticationModule.cs
- AnimationClock.cs
- StylusOverProperty.cs
- PipeSecurity.cs
- InvokePattern.cs
- DispatcherExceptionEventArgs.cs
- SynchronousReceiveElement.cs
- DataComponentGenerator.cs
- MD5.cs
- IERequestCache.cs
- ServiceHostingEnvironmentSection.cs
- IERequestCache.cs
- SqlSupersetValidator.cs
- SQLInt16Storage.cs
- LinearGradientBrush.cs
- FieldNameLookup.cs
- XmlRootAttribute.cs
- AssemblyAttributesGoHere.cs
- FormViewCommandEventArgs.cs
- XXXInfos.cs
- MobileTemplatedControlDesigner.cs
- QilXmlReader.cs
- Events.cs
- FormViewInsertEventArgs.cs
- ContentPropertyAttribute.cs
- infer.cs
- TextTreeInsertElementUndoUnit.cs
- DataServiceClientException.cs
- PropertyToken.cs
- UnknownBitmapEncoder.cs
- FloaterParaClient.cs
- XmlSchemaAnyAttribute.cs
- AssemblyBuilderData.cs
- BroadcastEventHelper.cs
- BitmapFrame.cs
- BindingObserver.cs
- RequestQueryProcessor.cs
- IndentedTextWriter.cs
- TextEditorTyping.cs
- SByteConverter.cs
- StrokeSerializer.cs
- ApplicationSecurityManager.cs
- AdapterUtil.cs
- WindowsEditBox.cs
- SwitchLevelAttribute.cs
- TaskFileService.cs
- StringInfo.cs
- IDReferencePropertyAttribute.cs
- FlowStep.cs
- Errors.cs
- SafeCancelMibChangeNotify.cs
- Message.cs
- AutomationTextAttribute.cs
- EditorPartChrome.cs
- AlphabeticalEnumConverter.cs
- ScrollItemPattern.cs
- ContainerUtilities.cs
- ServiceParser.cs
- COSERVERINFO.cs
- HybridDictionary.cs
- RTLAwareMessageBox.cs
- WindowShowOrOpenTracker.cs
- UIElement3D.cs
- ByteStorage.cs
- updatecommandorderer.cs