1 //----------------------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //----------------------------------------------------------------------------- 4 namespace System.ServiceModel.ComIntegration 5 { 6 using System; 7 using System.Runtime.InteropServices.ComTypes; 8 using Microsoft.Win32; 9 using System.Reflection; 10 using System.Collections.Generic; 11 using System.Threading; 12 using System.Runtime.Remoting; 13 using System.Runtime.Remoting.Services; 14 using System.Diagnostics; 15 using System.ServiceModel.Diagnostics; 16 17 18 [System.Runtime.InteropServices.ComVisible(true)] 19 [System.Runtime.InteropServices.Guid("CE39D6F3-DAB7-41b3-9F7D-BD1CC4E92399")] 20 [MonikerProxyAttribute] 21 public sealed class ServiceMoniker : ContextBoundObject 22 { 23 24 25 26 } 27 28 29 internal sealed class ServiceMonikerInternal : ContextBoundObject, IMoniker, IParseDisplayName, IDisposable 30 { IDisposable.Dispose()31 void IDisposable.Dispose() 32 { 33 34 35 } ServiceMonikerInternal()36 public ServiceMonikerInternal() 37 { 38 PropertyTable = new Dictionary<MonikerHelper.MonikerAttribute, string>(); 39 } IMoniker.GetClassID(out System.Guid clsid)40 void IMoniker.GetClassID(out System.Guid clsid) 41 { 42 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 43 } 44 IMoniker.IsDirty()45 int IMoniker.IsDirty() 46 { 47 return HR.S_FALSE; 48 } 49 IMoniker.Load(IStream stream)50 void IMoniker.Load(IStream stream) 51 { 52 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 53 } 54 IMoniker.Save(IStream stream, bool isDirty)55 void IMoniker.Save(IStream stream, bool isDirty) 56 { 57 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 58 } 59 IMoniker.GetSizeMax(out Int64 size)60 void IMoniker.GetSizeMax(out Int64 size) 61 { 62 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 63 } 64 IMoniker.BindToStorage(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riid, out object ppvObj)65 void IMoniker.BindToStorage(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riid, out object ppvObj) 66 { 67 68 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 69 70 } 71 IMoniker.BindToObject(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riidResult, IntPtr ppvResult)72 void IMoniker.BindToObject(IBindCtx pbc, IMoniker pmkToLeft, ref Guid riidResult, IntPtr ppvResult) 73 { 74 ProxyBuilder.Build(PropertyTable, ref riidResult, ppvResult); 75 } 76 IMoniker.Hash(IntPtr pdwHash)77 void IMoniker.Hash(IntPtr pdwHash) 78 { 79 if (IntPtr.Zero == pdwHash) 80 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pdwHash"); 81 82 System.Runtime.InteropServices.Marshal.WriteInt32(pdwHash, 0); 83 } 84 IMoniker.CommonPrefixWith(IMoniker pmkOther, out IMoniker ppmkPrefix)85 void IMoniker.CommonPrefixWith(IMoniker pmkOther, 86 out IMoniker ppmkPrefix) 87 { 88 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 89 } 90 91 IMoniker.ComposeWith(IMoniker pmkRight, bool fOnlyIfNotGeneric, out IMoniker ppmkComposite)92 void IMoniker.ComposeWith(IMoniker pmkRight, bool fOnlyIfNotGeneric, out IMoniker ppmkComposite) 93 { 94 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 95 } 96 IMoniker.Enum(bool fForward, out IEnumMoniker ppenumMoniker)97 void IMoniker.Enum(bool fForward, out IEnumMoniker ppenumMoniker) 98 { 99 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 100 } 101 IMoniker.GetDisplayName(IBindCtx pbc, IMoniker pmkToLeft, out string ppszDisplayName)102 void IMoniker.GetDisplayName(IBindCtx pbc, IMoniker pmkToLeft, out string ppszDisplayName) 103 { 104 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 105 } 106 IMoniker.GetTimeOfLastChange(IBindCtx pbc, IMoniker pmkToLeft, out FILETIME pFileTime)107 void IMoniker.GetTimeOfLastChange(IBindCtx pbc, IMoniker pmkToLeft, out FILETIME pFileTime) 108 { 109 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 110 } 111 IMoniker.Inverse(out IMoniker ppmk)112 void IMoniker.Inverse(out IMoniker ppmk) 113 { 114 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 115 } 116 IMoniker.IsEqual(IMoniker pmkOtherMoniker)117 int IMoniker.IsEqual(IMoniker pmkOtherMoniker) 118 { 119 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 120 } 121 122 IMoniker.IsRunning(IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning)123 int IMoniker.IsRunning(IBindCtx pbc, 124 IMoniker pmkToLeft, 125 IMoniker pmkNewlyRunning) 126 { 127 return HR.S_FALSE; 128 } IMoniker.IsSystemMoniker(IntPtr pdwMksys)129 int IMoniker.IsSystemMoniker(IntPtr pdwMksys) 130 { 131 if (IntPtr.Zero == pdwMksys) 132 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pdwMksys"); 133 134 System.Runtime.InteropServices.Marshal.WriteInt32(pdwMksys, 0); 135 136 return HR.S_FALSE; 137 138 } 139 IMoniker.ParseDisplayName(IBindCtx pbc, IMoniker pmkToLeft, string pszDisplayName, out int pchEaten, out IMoniker ppmkOut)140 void IMoniker.ParseDisplayName(IBindCtx pbc, 141 IMoniker pmkToLeft, 142 string pszDisplayName, 143 out int pchEaten, 144 out IMoniker ppmkOut) 145 { 146 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 147 } 148 IMoniker.Reduce(IBindCtx pbc, int dwReduceHowFar, ref IMoniker ppmkToLeft, out IMoniker ppmkReduced)149 void IMoniker.Reduce(IBindCtx pbc, int dwReduceHowFar, ref IMoniker ppmkToLeft, out IMoniker ppmkReduced) 150 { 151 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 152 } 153 IMoniker.RelativePathTo(IMoniker pmkOther, out IMoniker ppmkRelPath)154 void IMoniker.RelativePathTo(IMoniker pmkOther, out IMoniker ppmkRelPath) 155 { 156 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 157 } 158 IParseDisplayName.ParseDisplayName(IBindCtx pbc, string pszDisplayName, IntPtr pchEaten, IntPtr ppmkOut)159 void IParseDisplayName.ParseDisplayName(IBindCtx pbc, string pszDisplayName, IntPtr pchEaten, IntPtr ppmkOut) 160 { 161 if (IntPtr.Zero == ppmkOut) 162 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("ppmkOut"); 163 164 System.Runtime.InteropServices.Marshal.WriteIntPtr(ppmkOut, IntPtr.Zero); 165 166 if (IntPtr.Zero == pchEaten) 167 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pchEaten"); 168 169 if (string.IsNullOrEmpty(pszDisplayName)) 170 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("pszDisplayName"); 171 172 173 MonikerUtility.Parse(pszDisplayName, ref PropertyTable); 174 ComPlusServiceMonikerTrace.Trace(TraceEventType.Verbose, TraceCode.ComIntegrationServiceMonikerParsed, 175 SR.TraceCodeComIntegrationServiceMonikerParsed, PropertyTable); 176 177 System.Runtime.InteropServices.Marshal.WriteInt32(pchEaten, pszDisplayName.Length); 178 179 IntPtr ppv = InterfaceHelper.GetInterfacePtrForObject(typeof(IMoniker).GUID, this); 180 181 System.Runtime.InteropServices.Marshal.WriteIntPtr(ppmkOut, ppv); 182 } 183 184 private Dictionary<MonikerHelper.MonikerAttribute, string> PropertyTable; 185 } 186 } 187