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
- Documentation.cs
- HttpListenerRequest.cs
- MetaType.cs
- RegexTree.cs
- PasswordTextNavigator.cs
- EnumConverter.cs
- ActivityMarkupSerializationProvider.cs
- JournalEntry.cs
- CodeDomDecompiler.cs
- ModelTypeConverter.cs
- FileStream.cs
- KeyedHashAlgorithm.cs
- Point4D.cs
- Vector3D.cs
- ConsoleCancelEventArgs.cs
- AutomationPatternInfo.cs
- SchemaNamespaceManager.cs
- GcHandle.cs
- CoTaskMemHandle.cs
- TreeNode.cs
- MemberCollection.cs
- _DisconnectOverlappedAsyncResult.cs
- SmiMetaData.cs
- BaseCodeDomTreeGenerator.cs
- Knowncolors.cs
- TypedTableBaseExtensions.cs
- AliasExpr.cs
- FilteredAttributeCollection.cs
- MethodBuilder.cs
- SQLMoneyStorage.cs
- LinqToSqlWrapper.cs
- XmlRootAttribute.cs
- CellParaClient.cs
- UserControlAutomationPeer.cs
- Token.cs
- InvokeHandlers.cs
- ApplicationGesture.cs
- FillErrorEventArgs.cs
- DataFormats.cs
- MailBnfHelper.cs
- SqlError.cs
- CommonProperties.cs
- Clause.cs
- EncoderFallback.cs
- MethodCallConverter.cs
- LineBreak.cs
- OutputCacheProfile.cs
- EntitySqlQueryCacheKey.cs
- StringCollectionMarkupSerializer.cs
- OleDbTransaction.cs
- RectangleGeometry.cs
- SevenBitStream.cs
- ProcessRequestArgs.cs
- DataGridTableCollection.cs
- MenuEventArgs.cs
- StringStorage.cs
- UiaCoreApi.cs
- IBuiltInEvidence.cs
- DecimalConstantAttribute.cs
- IDQuery.cs
- Container.cs
- templategroup.cs
- SessionStateItemCollection.cs
- TypeUsageBuilder.cs
- BuildResult.cs
- Win32Exception.cs
- XPathParser.cs
- GroupJoinQueryOperator.cs
- EncryptedData.cs
- SchemaElementLookUpTable.cs
- GroupBox.cs
- SqlEnums.cs
- InternalResources.cs
- safePerfProviderHandle.cs
- AudioException.cs
- parserscommon.cs
- Transform3DGroup.cs
- LogManagementAsyncResult.cs
- Validator.cs
- BaseValidator.cs
- ExtendedProperty.cs
- DocumentViewerBase.cs
- sqlser.cs
- DeviceContext.cs
- TableLayoutPanelDesigner.cs
- PrimitiveCodeDomSerializer.cs
- Journal.cs
- Socket.cs
- CursorInteropHelper.cs
- COM2AboutBoxPropertyDescriptor.cs
- DataTrigger.cs
- DataTableReaderListener.cs
- VirtualDirectoryMapping.cs
- DataConnectionHelper.cs
- CoTaskMemUnicodeSafeHandle.cs
- SafeNativeMethods.cs
- XmlILTrace.cs
- GeometryConverter.cs
- CodeThrowExceptionStatement.cs
- Base64WriteStateInfo.cs