You've already forked linux-packaging-mono
Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
254
external/referencesource/mscorlib/microsoft/win32/unsafenativemethods.cs
vendored
Normal file
254
external/referencesource/mscorlib/microsoft/win32/unsafenativemethods.cs
vendored
Normal file
@ -0,0 +1,254 @@
|
||||
// ==++==
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
// ==--==
|
||||
/*============================================================
|
||||
**
|
||||
** Class: UnsafeNativeMethods
|
||||
**
|
||||
============================================================*/
|
||||
namespace Microsoft.Win32 {
|
||||
using Microsoft.Win32;
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Text;
|
||||
using System.Diagnostics.Tracing;
|
||||
|
||||
[System.Security.SecurityCritical] // auto-generated
|
||||
[SuppressUnmanagedCodeSecurityAttribute()]
|
||||
internal static class UnsafeNativeMethods {
|
||||
|
||||
[DllImport(Win32Native.KERNEL32, EntryPoint="GetTimeZoneInformation", SetLastError = true, ExactSpelling = true)]
|
||||
[ResourceExposure(ResourceScope.None)]
|
||||
internal static extern int GetTimeZoneInformation(out Win32Native.TimeZoneInformation lpTimeZoneInformation);
|
||||
|
||||
[DllImport(Win32Native.KERNEL32, EntryPoint="GetDynamicTimeZoneInformation", SetLastError = true, ExactSpelling = true)]
|
||||
[ResourceExposure(ResourceScope.None)]
|
||||
internal static extern int GetDynamicTimeZoneInformation(out Win32Native.DynamicTimeZoneInformation lpDynamicTimeZoneInformation);
|
||||
|
||||
//
|
||||
// BOOL GetFileMUIPath(
|
||||
// DWORD dwFlags,
|
||||
// PCWSTR pcwszFilePath,
|
||||
// PWSTR pwszLanguage,
|
||||
// PULONG pcchLanguage,
|
||||
// PWSTR pwszFileMUIPath,
|
||||
// PULONG pcchFileMUIPath,
|
||||
// PULONGLONG pululEnumerator
|
||||
// );
|
||||
//
|
||||
[DllImport(Win32Native.KERNEL32, EntryPoint="GetFileMUIPath", SetLastError = true, ExactSpelling = true)]
|
||||
[ResourceExposure(ResourceScope.Machine)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
internal static extern bool GetFileMUIPath(
|
||||
int flags,
|
||||
[MarshalAs(UnmanagedType.LPWStr)]
|
||||
String filePath,
|
||||
[MarshalAs(UnmanagedType.LPWStr)]
|
||||
StringBuilder language,
|
||||
ref int languageLength,
|
||||
[MarshalAs(UnmanagedType.LPWStr)]
|
||||
StringBuilder fileMuiPath,
|
||||
ref int fileMuiPathLength,
|
||||
ref Int64 enumerator);
|
||||
|
||||
|
||||
[DllImport(Win32Native.USER32, EntryPoint="LoadStringW", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)]
|
||||
[ResourceExposure(ResourceScope.Process)]
|
||||
internal static extern int LoadString(SafeLibraryHandle handle, int id, StringBuilder buffer, int bufferLength);
|
||||
|
||||
[DllImport(Win32Native.KERNEL32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)]
|
||||
[ResourceExposure(ResourceScope.Machine)]
|
||||
internal static extern SafeLibraryHandle LoadLibraryEx(string libFilename, IntPtr reserved, int flags);
|
||||
|
||||
[DllImport(Win32Native.KERNEL32, CharSet=System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
[ResourceExposure(ResourceScope.None)]
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
|
||||
internal static extern bool FreeLibrary(IntPtr hModule);
|
||||
|
||||
|
||||
[SecurityCritical]
|
||||
[SuppressUnmanagedCodeSecurityAttribute()]
|
||||
internal static unsafe class ManifestEtw
|
||||
{
|
||||
//
|
||||
// Constants error coded returned by ETW APIs
|
||||
//
|
||||
|
||||
// The event size is larger than the allowed maximum (64k - header).
|
||||
internal const int ERROR_ARITHMETIC_OVERFLOW = 534;
|
||||
|
||||
// Occurs when filled buffers are trying to flush to disk,
|
||||
// but disk IOs are not happening fast enough.
|
||||
// This happens when the disk is slow and event traffic is heavy.
|
||||
// Eventually, there are no more free (empty) buffers and the event is dropped.
|
||||
internal const int ERROR_NOT_ENOUGH_MEMORY = 8;
|
||||
|
||||
internal const int ERROR_MORE_DATA = 0xEA;
|
||||
|
||||
//
|
||||
// ETW Methods
|
||||
//
|
||||
|
||||
internal const int EVENT_CONTROL_CODE_DISABLE_PROVIDER = 0;
|
||||
internal const int EVENT_CONTROL_CODE_ENABLE_PROVIDER = 1;
|
||||
internal const int EVENT_CONTROL_CODE_CAPTURE_STATE = 2;
|
||||
|
||||
//
|
||||
// Callback
|
||||
//
|
||||
[SecurityCritical]
|
||||
internal unsafe delegate void EtwEnableCallback(
|
||||
[In] ref Guid sourceId,
|
||||
[In] int isEnabled,
|
||||
[In] byte level,
|
||||
[In] long matchAnyKeywords,
|
||||
[In] long matchAllKeywords,
|
||||
[In] EVENT_FILTER_DESCRIPTOR* filterData,
|
||||
[In] void* callbackContext
|
||||
);
|
||||
|
||||
//
|
||||
// Registration APIs
|
||||
//
|
||||
[SecurityCritical]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventRegister", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
internal static extern unsafe uint EventRegister(
|
||||
[In] ref Guid providerId,
|
||||
[In]EtwEnableCallback enableCallback,
|
||||
[In]void* callbackContext,
|
||||
[In][Out]ref long registrationHandle
|
||||
);
|
||||
|
||||
//
|
||||
[SecurityCritical]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventUnregister", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
internal static extern uint EventUnregister([In] long registrationHandle);
|
||||
|
||||
//
|
||||
// Writing (Publishing/Logging) APIs
|
||||
//
|
||||
//
|
||||
[SecurityCritical]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventWrite", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
internal static extern unsafe int EventWrite(
|
||||
[In] long registrationHandle,
|
||||
[In] ref EventDescriptor eventDescriptor,
|
||||
[In] int userDataCount,
|
||||
[In] EventProvider.EventData* userData
|
||||
);
|
||||
|
||||
[SecurityCritical]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventWriteString", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
internal static extern unsafe int EventWriteString(
|
||||
[In] long registrationHandle,
|
||||
[In] byte level,
|
||||
[In] long keyword,
|
||||
[In] string msg
|
||||
);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
unsafe internal struct EVENT_FILTER_DESCRIPTOR
|
||||
{
|
||||
public long Ptr;
|
||||
public int Size;
|
||||
public int Type;
|
||||
};
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventWriteTransfer", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
[SuppressUnmanagedCodeSecurityAttribute] // Don't do security checks
|
||||
internal static extern int EventWriteTransfer(
|
||||
[In] long registrationHandle,
|
||||
[In] ref EventDescriptor eventDescriptor,
|
||||
[In] Guid* activityId,
|
||||
[In] Guid* relatedActivityId,
|
||||
[In] int userDataCount,
|
||||
[In] EventProvider.EventData* userData
|
||||
);
|
||||
|
||||
internal enum ActivityControl : uint
|
||||
{
|
||||
EVENT_ACTIVITY_CTRL_GET_ID = 1,
|
||||
EVENT_ACTIVITY_CTRL_SET_ID = 2,
|
||||
EVENT_ACTIVITY_CTRL_CREATE_ID = 3,
|
||||
EVENT_ACTIVITY_CTRL_GET_SET_ID = 4,
|
||||
EVENT_ACTIVITY_CTRL_CREATE_SET_ID = 5
|
||||
};
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EventActivityIdControl", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
[SuppressUnmanagedCodeSecurityAttribute] // Don't do security checks
|
||||
internal static extern int EventActivityIdControl([In] ActivityControl ControlCode, [In][Out] ref Guid ActivityId);
|
||||
|
||||
// Support for EnumerateTraceGuidsEx
|
||||
internal enum TRACE_QUERY_INFO_CLASS
|
||||
{
|
||||
TraceGuidQueryList,
|
||||
TraceGuidQueryInfo,
|
||||
TraceGuidQueryProcess,
|
||||
TraceStackTracingInfo,
|
||||
MaxTraceSetInfoClass
|
||||
};
|
||||
|
||||
internal struct TRACE_GUID_INFO
|
||||
{
|
||||
public int InstanceCount;
|
||||
public int Reserved;
|
||||
};
|
||||
|
||||
internal struct TRACE_PROVIDER_INSTANCE_INFO
|
||||
{
|
||||
public int NextOffset;
|
||||
public int EnableCount;
|
||||
public int Pid;
|
||||
public int Flags;
|
||||
};
|
||||
|
||||
internal struct TRACE_ENABLE_INFO
|
||||
{
|
||||
public int IsEnabled;
|
||||
public byte Level;
|
||||
public byte Reserved1;
|
||||
public ushort LoggerId;
|
||||
public int EnableProperty;
|
||||
public int Reserved2;
|
||||
public long MatchAnyKeyword;
|
||||
public long MatchAllKeyword;
|
||||
};
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage")]
|
||||
[DllImport(Win32Native.ADVAPI32, ExactSpelling = true, EntryPoint = "EnumerateTraceGuidsEx", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
|
||||
[SuppressUnmanagedCodeSecurityAttribute] // Don't do security checks
|
||||
internal static extern int EnumerateTraceGuidsEx(
|
||||
TRACE_QUERY_INFO_CLASS TraceQueryInfoClass,
|
||||
void* InBuffer,
|
||||
int InBufferSize,
|
||||
void* OutBuffer,
|
||||
int OutBufferSize,
|
||||
ref int ReturnLength);
|
||||
|
||||
}
|
||||
#if !FEATURE_PAL && !FEATURE_CORECLR
|
||||
[SecurityCritical]
|
||||
[DllImport("combase.dll", PreserveSig = true)]
|
||||
internal static extern int RoGetActivationFactory(
|
||||
[MarshalAs(UnmanagedType.HString)] string activatableClassId,
|
||||
[In] ref Guid iid,
|
||||
[Out,MarshalAs(UnmanagedType.IInspectable)] out Object factory);
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user