xref: /aosp_15_r20/external/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
1*48a54d36SAndroid Build Coastguard Worker 
2*48a54d36SAndroid Build Coastguard Worker // Wizard-generated connection point proxy class
3*48a54d36SAndroid Build Coastguard Worker // WARNING: This file may be regenerated by the wizard
4*48a54d36SAndroid Build Coastguard Worker 
5*48a54d36SAndroid Build Coastguard Worker 
6*48a54d36SAndroid Build Coastguard Worker #pragma once
7*48a54d36SAndroid Build Coastguard Worker 
8*48a54d36SAndroid Build Coastguard Worker template<class T>
9*48a54d36SAndroid Build Coastguard Worker class CProxy_IDNSSDEvents :
10*48a54d36SAndroid Build Coastguard Worker 	public IConnectionPointImpl<T, &__uuidof(_IDNSSDEvents)>
11*48a54d36SAndroid Build Coastguard Worker {
12*48a54d36SAndroid Build Coastguard Worker public:
Fire_DomainFound(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,BSTR domain)13*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_DomainFound( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  BSTR domain)
14*48a54d36SAndroid Build Coastguard Worker 	{
15*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
16*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
17*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
18*48a54d36SAndroid Build Coastguard Worker 
19*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
20*48a54d36SAndroid Build Coastguard Worker 		{
21*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
22*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
23*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
24*48a54d36SAndroid Build Coastguard Worker 
25*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
26*48a54d36SAndroid Build Coastguard Worker 
27*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
28*48a54d36SAndroid Build Coastguard Worker 			{
29*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[4];
30*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = service;
31*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = flags;
32*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = ifIndex;
33*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_UI4;
34*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = domain;
35*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_BSTR;
36*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 4, 0 };
37*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
38*48a54d36SAndroid Build Coastguard Worker 			}
39*48a54d36SAndroid Build Coastguard Worker 		}
40*48a54d36SAndroid Build Coastguard Worker 		return hr;
41*48a54d36SAndroid Build Coastguard Worker 	}
Fire_DomainLost(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,BSTR domain)42*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_DomainLost( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  BSTR domain)
43*48a54d36SAndroid Build Coastguard Worker 	{
44*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
45*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
46*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
47*48a54d36SAndroid Build Coastguard Worker 
48*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
49*48a54d36SAndroid Build Coastguard Worker 		{
50*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
51*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
52*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
53*48a54d36SAndroid Build Coastguard Worker 
54*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
55*48a54d36SAndroid Build Coastguard Worker 
56*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
57*48a54d36SAndroid Build Coastguard Worker 			{
58*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[4];
59*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = service;
60*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = flags;
61*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = ifIndex;
62*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_UI4;
63*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = domain;
64*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_BSTR;
65*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 4, 0 };
66*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
67*48a54d36SAndroid Build Coastguard Worker 			}
68*48a54d36SAndroid Build Coastguard Worker 		}
69*48a54d36SAndroid Build Coastguard Worker 		return hr;
70*48a54d36SAndroid Build Coastguard Worker 	}
Fire_ServiceFound(IDNSSDService * browser,DNSSDFlags flags,ULONG ifIndex,BSTR serviceName,BSTR regType,BSTR domain)71*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_ServiceFound( IDNSSDService * browser,  DNSSDFlags flags,  ULONG ifIndex,  BSTR serviceName,  BSTR regType,  BSTR domain)
72*48a54d36SAndroid Build Coastguard Worker 	{
73*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
74*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
75*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
76*48a54d36SAndroid Build Coastguard Worker 
77*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
78*48a54d36SAndroid Build Coastguard Worker 		{
79*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
80*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
81*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
82*48a54d36SAndroid Build Coastguard Worker 
83*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
84*48a54d36SAndroid Build Coastguard Worker 
85*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
86*48a54d36SAndroid Build Coastguard Worker 			{
87*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[6];
88*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = browser;
89*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = flags;
90*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = ifIndex;
91*48a54d36SAndroid Build Coastguard Worker 				avarParams[3].vt = VT_UI4;
92*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = serviceName;
93*48a54d36SAndroid Build Coastguard Worker 				avarParams[2].vt = VT_BSTR;
94*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = regType;
95*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_BSTR;
96*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = domain;
97*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_BSTR;
98*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 6, 0 };
99*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(3, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
100*48a54d36SAndroid Build Coastguard Worker 			}
101*48a54d36SAndroid Build Coastguard Worker 		}
102*48a54d36SAndroid Build Coastguard Worker 		return hr;
103*48a54d36SAndroid Build Coastguard Worker 	}
Fire_ServiceLost(IDNSSDService * browser,DNSSDFlags flags,ULONG ifIndex,BSTR serviceName,BSTR regType,BSTR domain)104*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_ServiceLost( IDNSSDService * browser,  DNSSDFlags flags,  ULONG ifIndex,  BSTR serviceName,  BSTR regType,  BSTR domain)
105*48a54d36SAndroid Build Coastguard Worker 	{
106*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
107*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
108*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
109*48a54d36SAndroid Build Coastguard Worker 
110*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
111*48a54d36SAndroid Build Coastguard Worker 		{
112*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
113*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
114*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
115*48a54d36SAndroid Build Coastguard Worker 
116*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
117*48a54d36SAndroid Build Coastguard Worker 
118*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
119*48a54d36SAndroid Build Coastguard Worker 			{
120*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[6];
121*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = browser;
122*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = flags;
123*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = ifIndex;
124*48a54d36SAndroid Build Coastguard Worker 				avarParams[3].vt = VT_UI4;
125*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = serviceName;
126*48a54d36SAndroid Build Coastguard Worker 				avarParams[2].vt = VT_BSTR;
127*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = regType;
128*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_BSTR;
129*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = domain;
130*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_BSTR;
131*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 6, 0 };
132*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(4, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
133*48a54d36SAndroid Build Coastguard Worker 			}
134*48a54d36SAndroid Build Coastguard Worker 		}
135*48a54d36SAndroid Build Coastguard Worker 		return hr;
136*48a54d36SAndroid Build Coastguard Worker 	}
Fire_ServiceResolved(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,BSTR fullName,BSTR hostName,USHORT port,ITXTRecord * record)137*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_ServiceResolved( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  BSTR fullName,  BSTR hostName,  USHORT port,  ITXTRecord * record)
138*48a54d36SAndroid Build Coastguard Worker 	{
139*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
140*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
141*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
142*48a54d36SAndroid Build Coastguard Worker 
143*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
144*48a54d36SAndroid Build Coastguard Worker 		{
145*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
146*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
147*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
148*48a54d36SAndroid Build Coastguard Worker 
149*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
150*48a54d36SAndroid Build Coastguard Worker 
151*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
152*48a54d36SAndroid Build Coastguard Worker 			{
153*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[7];
154*48a54d36SAndroid Build Coastguard Worker 				avarParams[6] = service;
155*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = flags;
156*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = ifIndex;
157*48a54d36SAndroid Build Coastguard Worker 				avarParams[4].vt = VT_UI4;
158*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = fullName;
159*48a54d36SAndroid Build Coastguard Worker 				avarParams[3].vt = VT_BSTR;
160*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = hostName;
161*48a54d36SAndroid Build Coastguard Worker 				avarParams[2].vt = VT_BSTR;
162*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = port;
163*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_UI2;
164*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = record;
165*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 7, 0 };
166*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(5, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
167*48a54d36SAndroid Build Coastguard Worker 			}
168*48a54d36SAndroid Build Coastguard Worker 		}
169*48a54d36SAndroid Build Coastguard Worker 		return hr;
170*48a54d36SAndroid Build Coastguard Worker 	}
Fire_ServiceRegistered(IDNSSDService * service,DNSSDFlags flags,BSTR name,BSTR regType,BSTR domain)171*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_ServiceRegistered( IDNSSDService * service,  DNSSDFlags flags,  BSTR name,  BSTR regType,  BSTR domain)
172*48a54d36SAndroid Build Coastguard Worker 	{
173*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
174*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
175*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
176*48a54d36SAndroid Build Coastguard Worker 
177*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
178*48a54d36SAndroid Build Coastguard Worker 		{
179*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
180*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
181*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
182*48a54d36SAndroid Build Coastguard Worker 
183*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
184*48a54d36SAndroid Build Coastguard Worker 
185*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
186*48a54d36SAndroid Build Coastguard Worker 			{
187*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[5];
188*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = service;
189*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = flags;
190*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = name;
191*48a54d36SAndroid Build Coastguard Worker 				avarParams[2].vt = VT_BSTR;
192*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = regType;
193*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_BSTR;
194*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = domain;
195*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_BSTR;
196*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 5, 0 };
197*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(6, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
198*48a54d36SAndroid Build Coastguard Worker 			}
199*48a54d36SAndroid Build Coastguard Worker 		}
200*48a54d36SAndroid Build Coastguard Worker 		return hr;
201*48a54d36SAndroid Build Coastguard Worker 	}
Fire_QueryRecordAnswered(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,BSTR fullName,DNSSDRRType rrtype,DNSSDRRClass rrclass,VARIANT rdata,ULONG ttl)202*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_QueryRecordAnswered( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  BSTR fullName,  DNSSDRRType rrtype,  DNSSDRRClass rrclass,  VARIANT rdata,  ULONG ttl)
203*48a54d36SAndroid Build Coastguard Worker 	{
204*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
205*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
206*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
207*48a54d36SAndroid Build Coastguard Worker 
208*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
209*48a54d36SAndroid Build Coastguard Worker 		{
210*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
211*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
212*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
213*48a54d36SAndroid Build Coastguard Worker 
214*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
215*48a54d36SAndroid Build Coastguard Worker 
216*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
217*48a54d36SAndroid Build Coastguard Worker 			{
218*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[8];
219*48a54d36SAndroid Build Coastguard Worker 				avarParams[7] = service;
220*48a54d36SAndroid Build Coastguard Worker 				avarParams[6] = flags;
221*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = ifIndex;
222*48a54d36SAndroid Build Coastguard Worker 				avarParams[5].vt = VT_UI4;
223*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = fullName;
224*48a54d36SAndroid Build Coastguard Worker 				avarParams[4].vt = VT_BSTR;
225*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = rrtype;
226*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = rrclass;
227*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = rdata;
228*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = ttl;
229*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_UI4;
230*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 8, 0 };
231*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(7, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
232*48a54d36SAndroid Build Coastguard Worker 			}
233*48a54d36SAndroid Build Coastguard Worker 		}
234*48a54d36SAndroid Build Coastguard Worker 		return hr;
235*48a54d36SAndroid Build Coastguard Worker 	}
Fire_RecordRegistered(IDNSSDRecord * record,DNSSDFlags flags)236*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_RecordRegistered( IDNSSDRecord * record,  DNSSDFlags flags)
237*48a54d36SAndroid Build Coastguard Worker 	{
238*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
239*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
240*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
241*48a54d36SAndroid Build Coastguard Worker 
242*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
243*48a54d36SAndroid Build Coastguard Worker 		{
244*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
245*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
246*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
247*48a54d36SAndroid Build Coastguard Worker 
248*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
249*48a54d36SAndroid Build Coastguard Worker 
250*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
251*48a54d36SAndroid Build Coastguard Worker 			{
252*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[2];
253*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = record;
254*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = flags;
255*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 2, 0 };
256*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(8, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
257*48a54d36SAndroid Build Coastguard Worker 			}
258*48a54d36SAndroid Build Coastguard Worker 		}
259*48a54d36SAndroid Build Coastguard Worker 		return hr;
260*48a54d36SAndroid Build Coastguard Worker 	}
Fire_AddressFound(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,BSTR hostname,DNSSDAddressFamily addressFamily,BSTR address,ULONG ttl)261*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_AddressFound( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  BSTR hostname,  DNSSDAddressFamily addressFamily,  BSTR address,  ULONG ttl)
262*48a54d36SAndroid Build Coastguard Worker 	{
263*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
264*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
265*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
266*48a54d36SAndroid Build Coastguard Worker 
267*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
268*48a54d36SAndroid Build Coastguard Worker 		{
269*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
270*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
271*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
272*48a54d36SAndroid Build Coastguard Worker 
273*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
274*48a54d36SAndroid Build Coastguard Worker 
275*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
276*48a54d36SAndroid Build Coastguard Worker 			{
277*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[7];
278*48a54d36SAndroid Build Coastguard Worker 				avarParams[6] = service;
279*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = flags;
280*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = ifIndex;
281*48a54d36SAndroid Build Coastguard Worker 				avarParams[4].vt = VT_UI4;
282*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = hostname;
283*48a54d36SAndroid Build Coastguard Worker 				avarParams[3].vt = VT_BSTR;
284*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = addressFamily;
285*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = address;
286*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_BSTR;
287*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = ttl;
288*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_UI4;
289*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 7, 0 };
290*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(9, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
291*48a54d36SAndroid Build Coastguard Worker 			}
292*48a54d36SAndroid Build Coastguard Worker 		}
293*48a54d36SAndroid Build Coastguard Worker 		return hr;
294*48a54d36SAndroid Build Coastguard Worker 	}
Fire_MappingCreated(IDNSSDService * service,DNSSDFlags flags,ULONG ifIndex,ULONG externalAddress,DNSSDAddressFamily addressFamily,DNSSDProtocol protocol,USHORT internalPort,USHORT externalPort,ULONG ttl)295*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_MappingCreated( IDNSSDService * service,  DNSSDFlags flags,  ULONG ifIndex,  ULONG externalAddress,  DNSSDAddressFamily addressFamily,  DNSSDProtocol protocol,  USHORT internalPort,  USHORT externalPort,  ULONG ttl)
296*48a54d36SAndroid Build Coastguard Worker 	{
297*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
298*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
299*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
300*48a54d36SAndroid Build Coastguard Worker 
301*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
302*48a54d36SAndroid Build Coastguard Worker 		{
303*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
304*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
305*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
306*48a54d36SAndroid Build Coastguard Worker 
307*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
308*48a54d36SAndroid Build Coastguard Worker 
309*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
310*48a54d36SAndroid Build Coastguard Worker 			{
311*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[9];
312*48a54d36SAndroid Build Coastguard Worker 				avarParams[8] = service;
313*48a54d36SAndroid Build Coastguard Worker 				avarParams[7] = flags;
314*48a54d36SAndroid Build Coastguard Worker 				avarParams[6] = ifIndex;
315*48a54d36SAndroid Build Coastguard Worker 				avarParams[6].vt = VT_UI4;
316*48a54d36SAndroid Build Coastguard Worker 				avarParams[5] = externalAddress;
317*48a54d36SAndroid Build Coastguard Worker 				avarParams[5].vt = VT_UI4;
318*48a54d36SAndroid Build Coastguard Worker 				avarParams[4] = addressFamily;
319*48a54d36SAndroid Build Coastguard Worker 				avarParams[3] = protocol;
320*48a54d36SAndroid Build Coastguard Worker 				avarParams[2] = internalPort;
321*48a54d36SAndroid Build Coastguard Worker 				avarParams[2].vt = VT_UI2;
322*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = externalPort;
323*48a54d36SAndroid Build Coastguard Worker 				avarParams[1].vt = VT_UI2;
324*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = ttl;
325*48a54d36SAndroid Build Coastguard Worker 				avarParams[0].vt = VT_UI4;
326*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 9, 0 };
327*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(10, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
328*48a54d36SAndroid Build Coastguard Worker 			}
329*48a54d36SAndroid Build Coastguard Worker 		}
330*48a54d36SAndroid Build Coastguard Worker 		return hr;
331*48a54d36SAndroid Build Coastguard Worker 	}
Fire_OperationFailed(IDNSSDService * service,DNSSDError error)332*48a54d36SAndroid Build Coastguard Worker 	HRESULT Fire_OperationFailed( IDNSSDService * service,  DNSSDError error)
333*48a54d36SAndroid Build Coastguard Worker 	{
334*48a54d36SAndroid Build Coastguard Worker 		HRESULT hr = S_OK;
335*48a54d36SAndroid Build Coastguard Worker 		T * pThis = static_cast<T *>(this);
336*48a54d36SAndroid Build Coastguard Worker 		int cConnections = m_vec.GetSize();
337*48a54d36SAndroid Build Coastguard Worker 
338*48a54d36SAndroid Build Coastguard Worker 		for (int iConnection = 0; iConnection < cConnections; iConnection++)
339*48a54d36SAndroid Build Coastguard Worker 		{
340*48a54d36SAndroid Build Coastguard Worker 			pThis->Lock();
341*48a54d36SAndroid Build Coastguard Worker 			CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
342*48a54d36SAndroid Build Coastguard Worker 			pThis->Unlock();
343*48a54d36SAndroid Build Coastguard Worker 
344*48a54d36SAndroid Build Coastguard Worker 			IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
345*48a54d36SAndroid Build Coastguard Worker 
346*48a54d36SAndroid Build Coastguard Worker 			if (pConnection)
347*48a54d36SAndroid Build Coastguard Worker 			{
348*48a54d36SAndroid Build Coastguard Worker 				CComVariant avarParams[2];
349*48a54d36SAndroid Build Coastguard Worker 				avarParams[1] = service;
350*48a54d36SAndroid Build Coastguard Worker 				avarParams[0] = error;
351*48a54d36SAndroid Build Coastguard Worker 				DISPPARAMS params = { avarParams, NULL, 2, 0 };
352*48a54d36SAndroid Build Coastguard Worker 				hr = pConnection->Invoke(11, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
353*48a54d36SAndroid Build Coastguard Worker 			}
354*48a54d36SAndroid Build Coastguard Worker 		}
355*48a54d36SAndroid Build Coastguard Worker 		return hr;
356*48a54d36SAndroid Build Coastguard Worker 	}
357*48a54d36SAndroid Build Coastguard Worker };
358*48a54d36SAndroid Build Coastguard Worker 
359