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