//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.Runtime.InteropServices.ComTypes; using Microsoft.Win32; using System.Reflection; using System.Collections.Generic; using System.Threading; using System.Runtime.Remoting; using System.Runtime.Remoting.Services; using System.Diagnostics; using System.ServiceModel.Diagnostics; [System.Runtime.InteropServices.ComVisible(true)] [System.Runtime.InteropServices.Guid("CE39D6F3-DAB7-41b3-9F7D-BD1CC4E92399")] [MonikerProxyAttribute] public sealed class ServiceMoniker : ContextBoundObject { } internal sealed class ServiceMonikerInternal : ContextBoundObject, IMoniker, IParseDisplayName, IDisposable { void IDisposable.Dispose() { } public ServiceMonikerInternal() { PropertyTable = new Dictionary(); } void IMoniker.GetClassID(out System.Guid clsid) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } int IMoniker.IsDirty() { return HR.S_FALSE; } void IMoniker.Load(IStream stream) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.Save(IStream stream, bool isDirty) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.GetSizeMax(out Int64 size) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.BindToStorage(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riid, out object ppvObj) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.BindToObject(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riidResult, IntPtr ppvResult) { ProxyBuilder.Build(PropertyTable, ref riidResult, ppvResult); } void IMoniker.Hash(IntPtr pdwHash) { if (IntPtr.Zero == pdwHash) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pdwHash"); System.Runtime.InteropServices.Marshal.WriteInt32(pdwHash, 0); } void IMoniker.CommonPrefixWith(IMoniker pmkOther, out IMoniker ppmkPrefix) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.ComposeWith(IMoniker pmkRight, bool fOnlyIfNotGeneric, out IMoniker ppmkComposite) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.Enum(bool fForward, out IEnumMoniker ppenumMoniker) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.GetDisplayName(IBindCtx pbc, IMoniker pmkToLeft, out string ppszDisplayName) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.GetTimeOfLastChange(IBindCtx pbc, IMoniker pmkToLeft, out FILETIME pFileTime) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.Inverse(out IMoniker ppmk) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } int IMoniker.IsEqual(IMoniker pmkOtherMoniker) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } int IMoniker.IsRunning(IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning) { return HR.S_FALSE; } int IMoniker.IsSystemMoniker(IntPtr pdwMksys) { if (IntPtr.Zero == pdwMksys) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pdwMksys"); System.Runtime.InteropServices.Marshal.WriteInt32(pdwMksys, 0); return HR.S_FALSE; } void IMoniker.ParseDisplayName(IBindCtx pbc, IMoniker pmkToLeft, string pszDisplayName, out int pchEaten, out IMoniker ppmkOut) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.Reduce(IBindCtx pbc, int dwReduceHowFar, ref IMoniker ppmkToLeft, out IMoniker ppmkReduced) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IMoniker.RelativePathTo(IMoniker pmkOther, out IMoniker ppmkRelPath) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); } void IParseDisplayName.ParseDisplayName(IBindCtx pbc, string pszDisplayName, IntPtr pchEaten, IntPtr ppmkOut) { if (IntPtr.Zero == ppmkOut) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("ppmkOut"); System.Runtime.InteropServices.Marshal.WriteIntPtr(ppmkOut, IntPtr.Zero); if (IntPtr.Zero == pchEaten) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pchEaten"); if (string.IsNullOrEmpty(pszDisplayName)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pszDisplayName"); MonikerUtility.Parse(pszDisplayName, ref PropertyTable); ComPlusServiceMonikerTrace.Trace(TraceEventType.Verbose, TraceCode.ComIntegrationServiceMonikerParsed, SR.TraceCodeComIntegrationServiceMonikerParsed, PropertyTable); System.Runtime.InteropServices.Marshal.WriteInt32(pchEaten, pszDisplayName.Length); IntPtr ppv = InterfaceHelper.GetInterfacePtrForObject(typeof(IMoniker).GUID, this); System.Runtime.InteropServices.Marshal.WriteIntPtr(ppmkOut, ppv); } private Dictionary PropertyTable; } }