Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / Microsoft / Win32 / SafeNativeMethods.cs / 1 / SafeNativeMethods.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace Microsoft.Win32 { using System.Runtime.InteropServices; using System; using System.Diagnostics.CodeAnalysis; using System.Security.Permissions; using System.Collections; using System.IO; using System.Text; using System.Threading; using Microsoft.Win32.SafeHandles; using System.Runtime.ConstrainedExecution; using System.Runtime.Versioning; using System.Diagnostics; [HostProtection(MayLeakOnAbort = true)] [System.Security.SuppressUnmanagedCodeSecurity] internal static class SafeNativeMethods { public const int FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, FORMAT_MESSAGE_FROM_STRING = 0x00000400, FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000; public const int MB_RIGHT = 0x00080000, MB_RTLREADING = 0x00100000; [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true, BestFitMapping=true)] [SuppressMessage("Microsoft.Security", "CA2101:SpecifyMarshalingForPInvokeStringArguments")] [ResourceExposure(ResourceScope.None)] public static unsafe extern int FormatMessage(int dwFlags, SafeHandle lpSource, uint dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr[] arguments); [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true, BestFitMapping=true)] [ResourceExposure(ResourceScope.None)] public static extern int FormatMessage(int dwFlags, HandleRef lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr arguments); [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto, BestFitMapping=true)] [ResourceExposure(ResourceScope.None)] public static extern void OutputDebugString(String message); [DllImport(ExternDll.User32, CharSet=System.Runtime.InteropServices.CharSet.Auto, BestFitMapping=true)] public static extern int MessageBox(HandleRef hWnd, string text, string caption, int type); [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] public static extern bool CloseHandle(IntPtr handle); [DllImport(ExternDll.Kernel32, ExactSpelling=true, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] public static extern bool CloseHandle(HandleRef handle); [DllImport(ExternDll.Kernel32)] [ResourceExposure(ResourceScope.None)] public static extern bool QueryPerformanceCounter(out long value); [DllImport(ExternDll.Kernel32)] [ResourceExposure(ResourceScope.None)] public static extern bool QueryPerformanceFrequency(out long value); #if !FEATURE_PAL public const int FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF, FORMAT_MESSAGE_FROM_HMODULE = 0x00000800; [DllImport(ExternDll.User32, CharSet=System.Runtime.InteropServices.CharSet.Auto, BestFitMapping=false)] [ResourceExposure(ResourceScope.Machine)] public static extern int RegisterWindowMessage(string msg); #if DEBUG // Used only from debug code to assert we're on the right thread // for calling certain Windows methods. [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] [ResourceExposure(ResourceScope.Process)] public static extern int GetCurrentThreadId(); [DllImport(ExternDll.User32, ExactSpelling=true, CharSet=System.Runtime.InteropServices.CharSet.Auto)] [ResourceExposure(ResourceScope.Process)] public static extern int GetWindowThreadProcessId(HandleRef hWnd, out int lpdwProcessId); #endif [DllImport(ExternDll.Gdi32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] public static extern bool GetTextMetrics(HandleRef hDC, [In, Out] NativeMethods.TEXTMETRIC tm); [DllImport(ExternDll.Gdi32, CharSet=System.Runtime.InteropServices.CharSet.Auto)] [ResourceExposure(ResourceScope.Process)] public static extern IntPtr GetStockObject(int nIndex); // file src\Services\Monitoring\system\Diagnosticts\SafeNativeMethods.cs [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)] [ResourceExposure(ResourceScope.Process)] public static extern IntPtr LoadLibrary(string libFilename); [DllImport(ExternDll.Kernel32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)] [ResourceExposure(ResourceScope.Process)] public static extern bool FreeLibrary(HandleRef hModule); [DllImport(ExternDll.Kernel32, CharSet=CharSet.Auto, BestFitMapping=false)] [ResourceExposure(ResourceScope.None)] public static extern bool GetComputerName(StringBuilder lpBuffer, int[] nSize); public static unsafe int InterlockedCompareExchange(IntPtr pDestination, int exchange, int compare) { return Interlocked.CompareExchange(ref *(int *)pDestination.ToPointer(), exchange, compare); } [DllImport(ExternDll.PerfCounter, CharSet=System.Runtime.InteropServices.CharSet.Auto)] public static unsafe extern int FormatFromRawValue( uint dwCounterType, uint dwFormat, ref long pTimeBase, NativeMethods.PDH_RAW_COUNTER pRawValue1, NativeMethods.PDH_RAW_COUNTER pRawValue2, NativeMethods.PDH_FMT_COUNTERVALUE pFmtValue ); #endif // !FEATURE_PAL [DllImport(ExternDll.Kernel32, SetLastError=true, CharSet=CharSet.Auto, BestFitMapping=false)] [ResourceExposure(ResourceScope.Machine)] internal static extern SafeWaitHandle CreateSemaphore(NativeMethods.SECURITY_ATTRIBUTES lpSecurityAttributes, int initialCount, int maximumCount, String name); [DllImport(ExternDll.Kernel32, SetLastError=true, CharSet=CharSet.Auto, BestFitMapping=false)] [ResourceExposure(ResourceScope.Machine)] internal static extern SafeWaitHandle OpenSemaphore(/* DWORD */ int desiredAccess, bool inheritHandle, String name); [DllImport(ExternDll.Kernel32, SetLastError=true)] [ResourceExposure(ResourceScope.Machine)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] internal static extern bool ReleaseSemaphore(SafeWaitHandle handle, int releaseCount, out int previousCount); [StructLayout(LayoutKind.Sequential)] internal class PROCESS_INFORMATION { // The handles in PROCESS_INFORMATION are initialized in unmanaged functions. // We can't use SafeHandle here because Interop doesn't support [out] SafeHandles in structures/classes yet. public IntPtr hProcess = IntPtr.Zero; public IntPtr hThread = IntPtr.Zero; public int dwProcessId = 0; public int dwThreadId = 0; // Note this class makes no attempt to free the handles // Use InitialSetHandle to copy to handles into SafeHandles } /* The following code has been removed to prevent FXCOP violations. The code is left here incase it needs to be resurrected. // From file src\services\timers\system\timers\safenativemethods.cs public delegate void TimerAPCProc(IntPtr argToCompletionRoutine, int timerLowValue, int timerHighValue); */ } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ItemList.cs
- TextLineBreak.cs
- ViewStateException.cs
- Figure.cs
- Deserializer.cs
- ExitEventArgs.cs
- CFGGrammar.cs
- HttpListenerResponse.cs
- activationcontext.cs
- FacetDescription.cs
- ServicesUtilities.cs
- SqlTrackingQuery.cs
- CounterSetInstanceCounterDataSet.cs
- File.cs
- AnnotationResourceChangedEventArgs.cs
- FontStyles.cs
- SmtpNegotiateAuthenticationModule.cs
- SubMenuStyle.cs
- TreeNodeClickEventArgs.cs
- MachinePropertyVariants.cs
- Site.cs
- ApplicationServiceManager.cs
- ComponentManagerBroker.cs
- GifBitmapEncoder.cs
- ConfigXmlCDataSection.cs
- ClientData.cs
- AssociationType.cs
- CacheForPrimitiveTypes.cs
- FamilyTypeface.cs
- ToolboxItem.cs
- FixedPageAutomationPeer.cs
- DesignerMetadata.cs
- CodeCompiler.cs
- StringFormat.cs
- Root.cs
- TransformProviderWrapper.cs
- RawStylusInputCustomDataList.cs
- DeferredElementTreeState.cs
- HyperLinkDesigner.cs
- SpecialNameAttribute.cs
- OdbcConnectionString.cs
- DataBinder.cs
- DataRelationPropertyDescriptor.cs
- Pts.cs
- Panel.cs
- WebConfigurationHostFileChange.cs
- PinnedBufferMemoryStream.cs
- UIElement3DAutomationPeer.cs
- Canvas.cs
- FormViewModeEventArgs.cs
- DropSource.cs
- StatementContext.cs
- ComponentCollection.cs
- LambdaExpression.cs
- StylusLogic.cs
- FixedHyperLink.cs
- StringComparer.cs
- DbProviderFactories.cs
- EventLogPermissionEntryCollection.cs
- DataFormats.cs
- UidPropertyAttribute.cs
- ZoneLinkButton.cs
- DataGridViewColumnDesigner.cs
- NamespaceCollection.cs
- SvcMapFile.cs
- MSHTMLHostUtil.cs
- WeakReferenceKey.cs
- EndpointInfoCollection.cs
- PropertyValue.cs
- WebRequest.cs
- RegexWorker.cs
- CodeCatchClauseCollection.cs
- HtmlControl.cs
- DataSourceXmlAttributeAttribute.cs
- ConfigPathUtility.cs
- HttpCacheParams.cs
- CorePropertiesFilter.cs
- RenameRuleObjectDialog.cs
- ListViewCommandEventArgs.cs
- SHA384Managed.cs
- WindowsTreeView.cs
- RoleGroupCollection.cs
- CTreeGenerator.cs
- ConfigurationException.cs
- ToolStripSeparator.cs
- SQLInt64Storage.cs
- LinqDataSourceHelper.cs
- ButtonColumn.cs
- MemoryMappedViewStream.cs
- SequentialOutput.cs
- HttpContextServiceHost.cs
- SignedXml.cs
- RowBinding.cs
- WhitespaceReader.cs
- StringResourceManager.cs
- OleDbDataAdapter.cs
- StdValidatorsAndConverters.cs
- TabControlAutomationPeer.cs
- ExceptionUtility.cs
- CodeGenerationManager.cs