Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / Interop / SafeNativeMethods.cs / 1305376 / SafeNativeMethods.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Activation.Interop
{
using System;
using System.Security;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Runtime.Versioning;
using System.Runtime;
[SuppressUnmanagedCodeSecurity]
static class SafeNativeMethods
{
public const int ERROR_NO_TOKEN = 1008;
const string ADVAPI32 = "advapi32.dll";
const string KERNEL32 = "kernel32.dll";
[DllImport(ADVAPI32, SetLastError = true, EntryPoint = "OpenThreadToken")]
[ResourceExposure(ResourceScope.None)]
static extern bool OpenThreadTokenCritical(
[In] IntPtr ThreadHandle,
[In] TokenAccessLevels DesiredAccess,
[In] bool OpenAsSelf,
[Out] out SafeCloseHandleCritical TokenHandle);
[DllImport(KERNEL32, SetLastError = true)]
[ResourceExposure(ResourceScope.None)]
static extern IntPtr GetCurrentThread();
[Fx.Tag.SecurityNote(Critical = "Calls two safe native methods: GetCurrentThread and OpenThreadToken." +
"Marshal.GetLastWin32Error captures current thread token in a SecurityCritical field.")]
[SecurityCritical]
internal static bool OpenCurrentThreadTokenCritical(TokenAccessLevels desiredAccess, bool openAsSelf, out SafeCloseHandleCritical tokenHandle, out int error)
{
bool result = OpenThreadTokenCritical(GetCurrentThread(), desiredAccess, openAsSelf, out tokenHandle);
error = Marshal.GetLastWin32Error();
return result;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Activation.Interop
{
using System;
using System.Security;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Runtime.Versioning;
using System.Runtime;
[SuppressUnmanagedCodeSecurity]
static class SafeNativeMethods
{
public const int ERROR_NO_TOKEN = 1008;
const string ADVAPI32 = "advapi32.dll";
const string KERNEL32 = "kernel32.dll";
[DllImport(ADVAPI32, SetLastError = true, EntryPoint = "OpenThreadToken")]
[ResourceExposure(ResourceScope.None)]
static extern bool OpenThreadTokenCritical(
[In] IntPtr ThreadHandle,
[In] TokenAccessLevels DesiredAccess,
[In] bool OpenAsSelf,
[Out] out SafeCloseHandleCritical TokenHandle);
[DllImport(KERNEL32, SetLastError = true)]
[ResourceExposure(ResourceScope.None)]
static extern IntPtr GetCurrentThread();
[Fx.Tag.SecurityNote(Critical = "Calls two safe native methods: GetCurrentThread and OpenThreadToken." +
"Marshal.GetLastWin32Error captures current thread token in a SecurityCritical field.")]
[SecurityCritical]
internal static bool OpenCurrentThreadTokenCritical(TokenAccessLevels desiredAccess, bool openAsSelf, out SafeCloseHandleCritical tokenHandle, out int error)
{
bool result = OpenThreadTokenCritical(GetCurrentThread(), desiredAccess, openAsSelf, out tokenHandle);
error = Marshal.GetLastWin32Error();
return result;
}
}
}
// 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
- TimeSpanMinutesConverter.cs
- AddressAccessDeniedException.cs
- MenuItemStyleCollection.cs
- SystemIPv6InterfaceProperties.cs
- CachedBitmap.cs
- XmlSchemaInclude.cs
- SynchronizedDispatch.cs
- HandleCollector.cs
- MediaElementAutomationPeer.cs
- isolationinterop.cs
- ServiceOperation.cs
- XmlReaderSettings.cs
- Walker.cs
- ConfigXmlAttribute.cs
- ServiceHandle.cs
- InternalMappingException.cs
- WindowsToolbarItemAsMenuItem.cs
- WebPartConnectVerb.cs
- TextSpan.cs
- Container.cs
- VectorAnimation.cs
- XmlQueryRuntime.cs
- SqlBulkCopyColumnMapping.cs
- CodeBlockBuilder.cs
- XmlSchemaSimpleTypeRestriction.cs
- InternalControlCollection.cs
- MonthCalendar.cs
- HijriCalendar.cs
- TypeConverterValueSerializer.cs
- UndoEngine.cs
- ProfilePropertySettings.cs
- _NegoState.cs
- TemplatePropertyEntry.cs
- ObjectTypeMapping.cs
- RequestStatusBarUpdateEventArgs.cs
- DataGridColumnReorderingEventArgs.cs
- SectionXmlInfo.cs
- CodeTryCatchFinallyStatement.cs
- ActionMessageFilter.cs
- Baml2006ReaderContext.cs
- ToolStripItemCollection.cs
- ItemDragEvent.cs
- FieldAccessException.cs
- DetailsViewDeletedEventArgs.cs
- AssemblyResourceLoader.cs
- ChtmlTextWriter.cs
- StaticSiteMapProvider.cs
- Point.cs
- ItemList.cs
- WebErrorHandler.cs
- NetCodeGroup.cs
- RoleExceptions.cs
- DoubleUtil.cs
- StreamInfo.cs
- Composition.cs
- HMACMD5.cs
- WorkflowPersistenceService.cs
- SystemThemeKey.cs
- PreservationFileWriter.cs
- MediaPlayer.cs
- OdbcParameterCollection.cs
- PhysicalOps.cs
- ColorTransformHelper.cs
- InternalConfigHost.cs
- ChangeConflicts.cs
- EntityRecordInfo.cs
- EqualityArray.cs
- SmiTypedGetterSetter.cs
- NotifyCollectionChangedEventArgs.cs
- Guid.cs
- TheQuery.cs
- ReplacementText.cs
- BitStack.cs
- ErrorHandler.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- Int64AnimationBase.cs
- MasterPageParser.cs
- WizardPanelChangingEventArgs.cs
- DisposableCollectionWrapper.cs
- _FtpDataStream.cs
- CallbackValidator.cs
- PriorityQueue.cs
- EditorZoneBase.cs
- CallSiteOps.cs
- WorkflowControlEndpoint.cs
- TransformationRules.cs
- DataSourceSelectArguments.cs
- ReadOnlyCollectionBase.cs
- StaticFileHandler.cs
- Internal.cs
- DbTransaction.cs
- CodeMethodInvokeExpression.cs
- pingexception.cs
- GeneralTransform2DTo3D.cs
- DataGridViewAddColumnDialog.cs
- ExpressionHelper.cs
- SingleStorage.cs
- XmlILTrace.cs
- ApplicationServiceManager.cs
- SerializationHelper.cs