Files
PowerShell/src/System.Management.Automation/CoreCLR/CorePsStub.cs
T
Steve Lee c1c5344a88 Update copyright and license headers (#6134)
Based on standard practices, we need to have a copyright and license notice at the top of each source file. Removed existing copyrights and updated/added copyright notices for .h, .cpp, .cs, .ps1, and .psm1 files.

Updated module manifests for consistency to have Author = "PowerShell" and Company = "Microsoft Corporation". Removed multiple line breaks.

Separate PR coming to update contribution document for new source files: #6140

Manually reviewed each change.

Fix #6073
2018-02-13 09:23:53 -08:00

1089 lines
34 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Globalization;
using System.Collections.Generic;
using Microsoft.Win32;
#pragma warning disable 1591, 1572, 1571, 1573, 1587, 1570, 0067
#region CLR_STUBS
// This namespace contains stubs for some .NET types that are not in CoreCLR, such as ISerializable and SerializableAttribute.
// We use the stubs in this namespace to reduce #if/def in the code as much as possible.
namespace Microsoft.PowerShell.CoreClr.Stubs
{
#region SystemManagementStubs
// Summary:
// Describes the authentication level to be used to connect to WMI. This is
// used for the COM connection to WMI.
public enum AuthenticationLevel
{
// Summary:
// Authentication level should remain as it was before.
Unchanged = -1,
//
// Summary:
// The default COM authentication level. WMI uses the default Windows Authentication
// setting.
Default = 0,
//
// Summary:
// No COM authentication.
None = 1,
//
// Summary:
// Connect-level COM authentication.
Connect = 2,
//
// Summary:
// Call-level COM authentication.
Call = 3,
//
// Summary:
// Packet-level COM authentication.
Packet = 4,
//
// Summary:
// Packet Integrity-level COM authentication.
PacketIntegrity = 5,
//
// Summary:
// Packet Privacy-level COM authentication.
PacketPrivacy = 6,
}
// Summary:
// Describes the impersonation level to be used to connect to WMI.
public enum ImpersonationLevel
{
// Summary:
// Default impersonation.
Default = 0,
//
// Summary:
// Anonymous COM impersonation level that hides the identity of the caller.
// Calls to WMI may fail with this impersonation level.
Anonymous = 1,
//
// Summary:
// Identify-level COM impersonation level that allows objects to query the credentials
// of the caller. Calls to WMI may fail with this impersonation level.
Identify = 2,
//
// Summary:
// Impersonate-level COM impersonation level that allows objects to use the
// credentials of the caller. This is the recommended impersonation level for
// WMI calls.
Impersonate = 3,
//
// Summary:
// Delegate-level COM impersonation level that allows objects to permit other
// objects to use the credentials of the caller. This level, which will work
// with WMI calls but may constitute an unnecessary security risk, is supported
// only under Windows 2000.
Delegate = 4,
}
#endregion
}
#endregion CLR_STUBS
#region PS_STUBS
// Include PS types that are not needed for PowerShell on CSS
namespace System.Management.Automation
{
#region PSTransaction
/// <summary>
/// We don't need PSTransaction related types on CSS because System.Transactions
/// namespace is not available in CoreCLR
/// </summary>
public sealed class PSTransactionContext : IDisposable
{
internal PSTransactionContext(Internal.PSTransactionManager transactionManager) { }
public void Dispose() { }
}
/// <summary>
/// The severity of error that causes PowerShell to automatically
/// rollback the transaction.
/// </summary>
public enum RollbackSeverity
{
/// <summary>
/// Non-terminating errors or worse
/// </summary>
Error,
/// <summary>
/// Terminating errors or worse
/// </summary>
TerminatingError,
/// <summary>
/// Do not rollback the transaction on error
/// </summary>
Never
}
#endregion PSTransaction
#region ApartmentState
internal enum ApartmentState
{
//
// Summary:
// The System.Threading.Thread will create and enter a single-threaded apartment.
STA = 0,
//
// Summary:
// The System.Threading.Thread will create and enter a multithreaded apartment.
MTA = 1,
//
// Summary:
// The System.Threading.Thread.ApartmentState property has not been set.
Unknown = 2
}
#endregion ApartmentState
}
namespace System.Management.Automation.Internal
{
/// <summary>
/// We don't need PSTransaction related types on CSS because System.Transactions
/// namespace is not available in CoreCLR
/// </summary>
internal sealed class PSTransactionManager : IDisposable
{
/// <summary>
/// Determines if you have a transaction that you can set active and work on.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR
/// </remarks>
internal bool HasTransaction
{
get
{
return false;
}
}
/// <summary>
/// Determines if the last transaction has been committed.
/// </summary>
internal bool IsLastTransactionCommitted
{
get
{
throw new NotImplementedException("IsLastTransactionCommitted");
}
}
/// <summary>
/// Determines if the last transaction has been rolled back.
/// </summary>
internal bool IsLastTransactionRolledBack
{
get
{
throw new NotImplementedException("IsLastTransactionRolledBack");
}
}
/// <summary>
/// Gets the rollback preference for the active transaction
/// </summary>
internal RollbackSeverity RollbackPreference
{
get
{
throw new NotImplementedException("RollbackPreference");
}
}
/// <summary>
/// Called by engine APIs to ensure they are protected from
/// ambient transactions.
/// </summary>
/// <remarks>
/// Always return null in CoreCLR
/// </remarks>
internal static IDisposable GetEngineProtectionScope()
{
return null;
}
/// <summary>
/// Aborts the current transaction, no matter how many subscribers are part of it.
/// </summary>
internal void Rollback(bool suppressErrors)
{
throw new NotImplementedException("Rollback");
}
public void Dispose() { }
}
}
namespace System.Management.Automation.ComInterop
{
using System.Dynamic;
using System.Diagnostics;
using System.Runtime.InteropServices;
/// <summary>
/// Provides helper methods to bind COM objects dynamically.
/// </summary>
/// <remarks>
/// COM is not supported in core powershell. So this is a stub type.
/// </remarks>
internal static class ComBinder
{
/// <summary>
/// Tries to perform binding of the dynamic get index operation.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR.
/// </remarks>
public static bool TryBindGetIndex(GetIndexBinder binder, DynamicMetaObject instance, DynamicMetaObject[] args, out DynamicMetaObject result)
{
result = null;
return false;
}
/// <summary>
/// Tries to perform binding of the dynamic set index operation.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR.
/// </remarks>
public static bool TryBindSetIndex(SetIndexBinder binder, DynamicMetaObject instance, DynamicMetaObject[] args, DynamicMetaObject value, out DynamicMetaObject result)
{
result = null;
return false;
}
/// <summary>
/// Tries to perform binding of the dynamic get member operation.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR.
/// </remarks>
public static bool TryBindGetMember(GetMemberBinder binder, DynamicMetaObject instance, out DynamicMetaObject result)
{
result = null;
return false;
}
/// <summary>
/// Tries to perform binding of the dynamic set member operation.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR.
/// </remarks>
public static bool TryBindSetMember(SetMemberBinder binder, DynamicMetaObject instance, DynamicMetaObject value, out DynamicMetaObject result)
{
result = null;
return false;
}
/// <summary>
/// Tries to perform binding of the dynamic invoke member operation.
/// </summary>
/// <remarks>
/// Always return false in CoreCLR.
/// </remarks>
public static bool TryBindInvokeMember(InvokeMemberBinder binder, bool isSetProperty, DynamicMetaObject instance, DynamicMetaObject[] args, out DynamicMetaObject result)
{
result = null;
return false;
}
}
#pragma warning disable 618 // Disable obsolete warning about VarEnum in CoreCLR
internal class VarEnumSelector
{
private static readonly Dictionary<VarEnum, Type> _ComToManagedPrimitiveTypes = CreateComToManagedPrimitiveTypes();
internal static Type GetTypeForVarEnum(VarEnum vt)
{
Type type;
switch (vt)
{
// VarEnums which can be used in VARIANTs, but which cannot occur in a TYPEDESC
case VarEnum.VT_EMPTY:
case VarEnum.VT_NULL:
case VarEnum.VT_RECORD:
type = typeof(void);
break;
// VarEnums which are not used in VARIANTs, but which can occur in a TYPEDESC
case VarEnum.VT_VOID:
type = typeof(void);
break;
case VarEnum.VT_HRESULT:
type = typeof(int);
break;
case ((VarEnum)37): // VT_INT_PTR:
type = typeof(IntPtr);
break;
case ((VarEnum)38): // VT_UINT_PTR:
type = typeof(UIntPtr);
break;
case VarEnum.VT_SAFEARRAY:
case VarEnum.VT_CARRAY:
type = typeof(Array);
break;
case VarEnum.VT_LPSTR:
case VarEnum.VT_LPWSTR:
type = typeof(string);
break;
case VarEnum.VT_PTR:
case VarEnum.VT_USERDEFINED:
type = typeof(object);
break;
// For VarEnums that can be used in VARIANTs and well as TYPEDESCs, just use VarEnumSelector
default:
type = VarEnumSelector.GetManagedMarshalType(vt);
break;
}
return type;
}
/// <summary>
/// Gets the managed type that an object needs to be coverted to in order for it to be able
/// to be represented as a Variant.
///
/// In general, there is a many-to-many mapping between Type and VarEnum. However, this method
/// returns a simple mapping that is needed for the current implementation. The reason for the
/// many-to-many relation is:
/// 1. Int32 maps to VT_I4 as well as VT_ERROR, and Decimal maps to VT_DECIMAL and VT_CY. However,
/// this changes if you throw the wrapper types into the mix.
/// 2. There is no Type to represent COM types. __ComObject is a private type, and Object is too
/// general.
/// </summary>
internal static Type GetManagedMarshalType(VarEnum varEnum) {
Debug.Assert((varEnum & VarEnum.VT_BYREF) == 0);
if (varEnum == VarEnum.VT_CY) {
return typeof(CurrencyWrapper);
}
if (IsPrimitiveType(varEnum)) {
return _ComToManagedPrimitiveTypes[varEnum];
}
switch (varEnum) {
case VarEnum.VT_EMPTY:
case VarEnum.VT_NULL:
case VarEnum.VT_UNKNOWN:
case VarEnum.VT_DISPATCH:
case VarEnum.VT_VARIANT:
return typeof(Object);
case VarEnum.VT_ERROR:
return typeof(ErrorWrapper);
default:
throw new InvalidOperationException(string.Format(System.Globalization.CultureInfo.CurrentCulture, ParserStrings.UnexpectedVarEnum, varEnum));;
}
}
private static Dictionary<VarEnum, Type> CreateComToManagedPrimitiveTypes()
{
Dictionary<VarEnum, Type> dict = new Dictionary<VarEnum, Type>();
// *** BEGIN GENERATED CODE ***
// generated by function: gen_ComToManagedPrimitiveTypes from: generate_comdispatch.py
dict[VarEnum.VT_I1] = typeof(SByte);
dict[VarEnum.VT_I2] = typeof(Int16);
dict[VarEnum.VT_I4] = typeof(Int32);
dict[VarEnum.VT_I8] = typeof(Int64);
dict[VarEnum.VT_UI1] = typeof(Byte);
dict[VarEnum.VT_UI2] = typeof(UInt16);
dict[VarEnum.VT_UI4] = typeof(UInt32);
dict[VarEnum.VT_UI8] = typeof(UInt64);
dict[VarEnum.VT_INT] = typeof(Int32);
dict[VarEnum.VT_UINT] = typeof(UInt32);
dict[VarEnum.VT_PTR] = typeof(IntPtr);
dict[VarEnum.VT_BOOL] = typeof(Boolean);
dict[VarEnum.VT_R4] = typeof(Single);
dict[VarEnum.VT_R8] = typeof(Double);
dict[VarEnum.VT_DECIMAL] = typeof(Decimal);
dict[VarEnum.VT_DATE] = typeof(DateTime);
dict[VarEnum.VT_BSTR] = typeof(String);
dict[VarEnum.VT_CLSID] = typeof(Guid);
// *** END GENERATED CODE ***
dict[VarEnum.VT_CY] = typeof(CurrencyWrapper);
dict[VarEnum.VT_ERROR] = typeof(ErrorWrapper);
return dict;
}
/// <summary>
/// Primitive types are the basic COM types. It includes valuetypes like ints, but also reference types
/// like BStrs. It does not include composite types like arrays and user-defined COM types (IUnknown/IDispatch).
/// </summary>
internal static bool IsPrimitiveType(VarEnum varEnum) {
switch (varEnum) {
// *** BEGIN GENERATED CODE ***
// generated by function: gen_IsPrimitiveType from: generate_comdispatch.py
case VarEnum.VT_I1:
case VarEnum.VT_I2:
case VarEnum.VT_I4:
case VarEnum.VT_I8:
case VarEnum.VT_UI1:
case VarEnum.VT_UI2:
case VarEnum.VT_UI4:
case VarEnum.VT_UI8:
case VarEnum.VT_INT:
case VarEnum.VT_UINT:
case VarEnum.VT_BOOL:
case VarEnum.VT_ERROR:
case VarEnum.VT_R4:
case VarEnum.VT_R8:
case VarEnum.VT_DECIMAL:
case VarEnum.VT_CY:
case VarEnum.VT_DATE:
case VarEnum.VT_BSTR:
// *** END GENERATED CODE ***
return true;
}
return false;
}
}
#pragma warning restore 618
}
namespace Microsoft.PowerShell.Commands.Internal
{
using System.Security.AccessControl;
using System.Security.Principal;
#region TransactedRegistryKey
internal abstract class TransactedRegistryKey : IDisposable
{
public void Dispose() { }
public void SetValue(string name, object value)
{
throw new NotImplementedException("SetValue(string name, obj value) is not implemented. TransactedRegistry related APIs should not be used.");
}
public void SetValue(string name, object value, RegistryValueKind valueKind)
{
throw new NotImplementedException("SetValue(string name, obj value, RegistryValueKind valueKind) is not implemented. TransactedRegistry related APIs should not be used.");
}
public string[] GetValueNames()
{
throw new NotImplementedException("GetValueNames() is not implemented. TransactedRegistry related APIs should not be used.");
}
public void DeleteValue(string name)
{
throw new NotImplementedException("DeleteValue(string name) is not implemented. TransactedRegistry related APIs should not be used.");
}
public string[] GetSubKeyNames()
{
throw new NotImplementedException("GetSubKeyNames() is not implemented. TransactedRegistry related APIs should not be used.");
}
public TransactedRegistryKey CreateSubKey(string subkey)
{
throw new NotImplementedException("CreateSubKey(string subkey) is not implemented. TransactedRegistry related APIs should not be used.");
}
public TransactedRegistryKey OpenSubKey(string name, bool writable)
{
throw new NotImplementedException("OpenSubKey(string name, bool writeable) is not implemented. TransactedRegistry related APIs should not be used.");
}
public void DeleteSubKeyTree(string subkey)
{
throw new NotImplementedException("DeleteSubKeyTree(string subkey) is not implemented. TransactedRegistry related APIs should not be used.");
}
public object GetValue(string name)
{
throw new NotImplementedException("GetValue(string name) is not implemented. TransactedRegistry related APIs should not be used.");
}
public object GetValue(string name, object defaultValue, RegistryValueOptions options)
{
throw new NotImplementedException("GetValue(string name, object defaultValue, RegistryValueOptions options) is not implemented. TransactedRegistry related APIs should not be used.");
}
public RegistryValueKind GetValueKind(string name)
{
throw new NotImplementedException("GetValueKind(string name) is not implemented. TransactedRegistry related APIs should not be used.");
}
public void Close()
{
throw new NotImplementedException("Close() is not implemented. TransactedRegistry related APIs should not be used.");
}
public abstract string Name { get; }
public abstract int SubKeyCount { get; }
public void SetAccessControl(ObjectSecurity securityDescriptor)
{
throw new NotImplementedException("SetAccessControl(ObjectSecurity securityDescriptor) is not implemented. TransactedRegistry related APIs should not be used.");
}
public ObjectSecurity GetAccessControl(AccessControlSections includeSections)
{
throw new NotImplementedException("GetAccessControl(AccessControlSections includeSections) is not implemented. TransactedRegistry related APIs should not be used.");
}
}
internal sealed class TransactedRegistry
{
internal static readonly TransactedRegistryKey LocalMachine;
internal static readonly TransactedRegistryKey ClassesRoot;
internal static readonly TransactedRegistryKey Users;
internal static readonly TransactedRegistryKey CurrentConfig;
internal static readonly TransactedRegistryKey CurrentUser;
}
internal sealed class TransactedRegistrySecurity : ObjectSecurity
{
public override Type AccessRightType
{
get
{
throw new NotImplementedException();
}
}
public override Type AccessRuleType
{
get
{
throw new NotImplementedException();
}
}
public override Type AuditRuleType
{
get
{
throw new NotImplementedException();
}
}
public override AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
{
throw new NotImplementedException();
}
public override AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
{
throw new NotImplementedException();
}
protected override bool ModifyAccess(AccessControlModification modification, AccessRule rule, out bool modified)
{
throw new NotImplementedException();
}
protected override bool ModifyAudit(AccessControlModification modification, AuditRule rule, out bool modified)
{
throw new NotImplementedException();
}
}
#endregion TransactedRegistryKey
}
#endregion PS_STUBS
// -- Will port the actual PS component [update: Not necessarily porting all PS components listed here]
#region TEMPORARY
namespace System.Management.Automation.Internal
{
using Microsoft.PowerShell.Commands;
/// <summary>
/// TODO:CORECLR - The actual PowerShellModuleAssemblyAnalyzer cannot be enabled because we don't have 'System.Reflection.Metadata.dll' in our branch yet.
/// This stub will be removed once we enable the actual 'PowerShellModuleAssemblyAnalyzer'.
/// </summary>
internal static class PowerShellModuleAssemblyAnalyzer
{
internal static BinaryAnalysisResult AnalyzeModuleAssembly(string path, out Version assemblyVersion)
{
assemblyVersion = new Version("0.0.0.0");
return null;
}
}
}
namespace System.Management.Automation
{
using Microsoft.Win32;
#region RegistryStringResourceIndirect
internal sealed class RegistryStringResourceIndirect : IDisposable
{
internal static RegistryStringResourceIndirect GetResourceIndirectReader()
{
return new RegistryStringResourceIndirect();
}
/// <summary>
/// Dispose method unloads the app domain that was
/// created in the constructor.
/// </summary>
public void Dispose()
{
}
internal string GetResourceStringIndirect(
string assemblyName,
string modulePath,
string baseNameRIDPair)
{
throw new NotImplementedException("RegistryStringResourceIndirect.GetResourceStringIndirect - 3 params");
}
internal string GetResourceStringIndirect(
RegistryKey key,
string valueName,
string assemblyName,
string modulePath)
{
throw new NotImplementedException("RegistryStringResourceIndirect.GetResourceStringIndirect - 4 params");
}
}
#endregion
}
namespace System.Management.Automation.Security
{
/// <summary>
/// We don't need Windows Lockdown Policy related types on CSS because CSS is
/// amd64 only and is used internally.
/// </summary>
internal sealed class SystemPolicy
{
private SystemPolicy() { }
/// <summary>
/// Gets the system lockdown policy
/// </summary>
/// <remarks>Always return SystemEnforcementMode.None in CSS (trusted)</remarks>
public static SystemEnforcementMode GetSystemLockdownPolicy()
{
return SystemEnforcementMode.None;
}
/// <summary>
/// Gets lockdown policy as applied to a file
/// </summary>
/// <remarks>Always return SystemEnforcementMode.None in CSS (trusted)</remarks>
public static SystemEnforcementMode GetLockdownPolicy(string path, System.Runtime.InteropServices.SafeHandle handle)
{
return SystemEnforcementMode.None;
}
internal static bool IsClassInApprovedList(Guid clsid)
{
throw new NotImplementedException("SystemPolicy.IsClassInApprovedList not implemented");
}
}
/// <summary>
/// How the policy is being enforced
/// </summary>
internal enum SystemEnforcementMode
{
/// Not enforced at all
None = 0,
/// Enabled - allow, but audit
Audit = 1,
/// Enabled, enforce restrictions
Enforce = 2
}
}
#if UNIX
// Porting note: Tracing is absolutely not available on Linux
namespace System.Management.Automation.Tracing
{
using System.Diagnostics.CodeAnalysis;
using System.Management.Automation.Internal;
/// <summary>
///
/// </summary>
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
public abstract class EtwActivity
{
/// <summary>
///
/// </summary>
/// <param name="activityId"></param>
/// <returns></returns>
public static bool SetActivityId(Guid activityId)
{
return false;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public static Guid CreateActivityId()
{
return Guid.Empty;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public static Guid GetActivityId()
{
return Guid.Empty;
}
}
public enum PowerShellTraceTask
{
/// <summary>
/// None
/// </summary>
None = 0,
/// <summary>
/// CreateRunspace
/// </summary>
CreateRunspace = 1,
/// <summary>
/// ExecuteCommand
/// </summary>
ExecuteCommand = 2,
/// <summary>
/// Serialization
/// </summary>
Serialization = 3,
/// <summary>
/// PowerShellConsoleStartup
/// </summary>
PowerShellConsoleStartup = 4,
}
/// <summary>
/// Defines Keywords.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1028")]
[Flags]
public enum PowerShellTraceKeywords : ulong
{
/// <summary>
/// None
/// </summary>
None = 0,
/// <summary>
/// Runspace
/// </summary>
Runspace = 0x1,
/// <summary>
/// Pipeline
/// </summary>
Pipeline = 0x2,
/// <summary>
/// Protocol
/// </summary>
Protocol = 0x4,
/// <summary>
/// Transport
/// </summary>
Transport = 0x8,
/// <summary>
/// Host
/// </summary>
Host = 0x10,
/// <summary>
/// Cmdlets
/// </summary>
Cmdlets = 0x20,
/// <summary>
/// Serializer
/// </summary>
Serializer = 0x40,
/// <summary>
/// Session
/// </summary>
Session = 0x80,
/// <summary>
/// ManagedPlugIn
/// </summary>
ManagedPlugIn = 0x100,
/// <summary>
///
/// </summary>
UseAlwaysDebug = 0x2000000000000000,
/// <summary>
///
/// </summary>
UseAlwaysOperational = 0x8000000000000000,
/// <summary>
///
/// </summary>
UseAlwaysAnalytic = 0x4000000000000000,
}
public sealed partial class Tracer : System.Management.Automation.Tracing.EtwActivity
{
static Tracer() { }
public void EndpointRegistered(string endpointName, string endpointType, string registeredBy)
{
}
public void EndpointUnregistered(string endpointName, string unregisteredBy)
{
}
public void EndpointDisabled(string endpointName, string disabledBy)
{
}
public void EndpointEnabled(string endpointName, string enabledBy)
{
}
public void EndpointModified(string endpointName, string modifiedBy)
{
}
public void BeginContainerParentJobExecution(Guid containerParentJobInstanceId)
{
}
public void BeginProxyJobExecution(Guid proxyJobInstanceId)
{
}
public void ProxyJobRemoteJobAssociation(Guid proxyJobInstanceId, Guid containerParentJobInstanceId)
{
}
public void EndProxyJobExecution(Guid proxyJobInstanceId)
{
}
public void BeginProxyJobEventHandler(Guid proxyJobInstanceId)
{
}
public void EndProxyJobEventHandler(Guid proxyJobInstanceId)
{
}
public void BeginProxyChildJobEventHandler(Guid proxyChildJobInstanceId)
{
}
public void EndContainerParentJobExecution(Guid containerParentJobInstanceId)
{
}
}
public sealed class PowerShellTraceSource : IDisposable
{
internal PowerShellTraceSource(PowerShellTraceTask task, PowerShellTraceKeywords keywords)
{
}
public void Dispose()
{
}
public bool WriteMessage(String message)
{
return false;
}
/// <summary>
///
/// </summary>
/// <param name="message1"></param>
/// <param name="message2"></param>
/// <returns></returns>
public bool WriteMessage(string message1, string message2)
{
return false;
}
/// <summary>
///
/// </summary>
/// <param name="message"></param>
/// <param name="instanceId"></param>
/// <returns></returns>
public bool WriteMessage(string message, Guid instanceId)
{
return false;
}
/// <summary>
///
/// </summary>
/// <param name="className"></param>
/// <param name="methodName"></param>
/// <param name="workflowId"></param>
/// <param name="message"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public void WriteMessage(string className, string methodName, Guid workflowId, string message, params string[] parameters)
{
return;
}
/// <summary>
///
/// </summary>
/// <param name="className"></param>
/// <param name="methodName"></param>
/// <param name="workflowId"></param>
/// <param name="job"></param>
/// <param name="message"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public void WriteMessage(string className, string methodName, Guid workflowId, Job job, string message, params string[] parameters)
{
return;
}
public bool TraceException(Exception exception)
{
return false;
}
}
/// <summary>
/// TraceSourceFactory will return an instance of TraceSource every time GetTraceSource method is called.
/// </summary>
public static class PowerShellTraceSourceFactory
{
/// <summary>
/// Returns an instance of BaseChannelWriter.
/// If the Etw is not supported by the platform it will return NullWriter.Instance
///
/// A Task and a set of Keywords can be specified in the GetTraceSource method (See overloads).
/// The supplied task and keywords are used to pass to the Etw provider in case they are
/// not defined in the manifest file.
/// </summary>
public static PowerShellTraceSource GetTraceSource()
{
return new PowerShellTraceSource(PowerShellTraceTask.None, PowerShellTraceKeywords.None);
}
/// <summary>
/// Returns an instance of BaseChannelWriter.
/// If the Etw is not supported by the platform it will return NullWriter.Instance
///
/// A Task and a set of Keywords can be specified in the GetTraceSource method (See overloads).
/// The supplied task and keywords are used to pass to the Etw provider in case they are
/// not defined in the manifest file.
/// </summary>
public static PowerShellTraceSource GetTraceSource(PowerShellTraceTask task)
{
return new PowerShellTraceSource(task, PowerShellTraceKeywords.None);
}
/// <summary>
/// Returns an instance of BaseChannelWriter.
/// If the Etw is not supported by the platform it will return NullWriter.Instance
///
/// A Task and a set of Keywords can be specified in the GetTraceSource method (See overloads).
/// The supplied task and keywords are used to pass to the Etw provider in case they are
/// not defined in the manifest file.
/// </summary>
public static PowerShellTraceSource GetTraceSource(PowerShellTraceTask task, PowerShellTraceKeywords keywords)
{
return new PowerShellTraceSource(task, keywords);
}
}
}
#endif
namespace Microsoft.PowerShell
{
internal static class NativeCultureResolver
{
internal static void SetThreadUILanguage(Int16 langId) { }
internal static CultureInfo UICulture
{
get
{
return CultureInfo.CurrentUICulture; // this is actually wrong, but until we port "hostifaces\NativeCultureResolver.cs" to Nano, this will do and will help avoid build break.
}
}
internal static CultureInfo Culture
{
get
{
return CultureInfo.CurrentCulture; // this is actually wrong, but until we port "hostifaces\NativeCultureResolver.cs" to Nano, this will do and will help avoid build break.
}
}
}
}
#endregion TEMPORARY
#pragma warning restore 1591, 1572, 1571, 1573, 1587, 1570, 0067