121 {
122 ComEventsMethod comEventsMethod =
FindMethod(dispid);
123 if (comEventsMethod == null)
124 {
125 return;
126 }
127 object[]
array =
new object[pDispParams.cArgs];
128 int[] array2 = new int[pDispParams.cArgs];
129 bool[] array3 = new bool[pDispParams.cArgs];
130 int length = pDispParams.cNamedArgs + pDispParams.cArgs;
131 Span<Variant> span =
new Span<Variant>(pDispParams.rgvarg.ToPointer(),
length);
132 Span<int> span2 =
new Span<int>(pDispParams.rgdispidNamedArgs.ToPointer(),
length);
133 int num;
135 for (i = 0;
i < pDispParams.cNamedArgs;
i++)
136 {
139 array[num] = variant.ToObject();
140 array3[num] = true;
141 int num2 = -1;
142 if (variant.IsByRef)
143 {
145 }
146 array2[num] = num2;
147 }
148 num = 0;
149 for (;
i < pDispParams.cArgs;
i++)
150 {
151 for (; array3[num]; num++)
152 {
153 }
155 array[num] = variant2.ToObject();
156 int num3 = -1;
157 if (variant2.IsByRef)
158 {
159 num3 = pDispParams.cArgs - 1 -
i;
160 }
161 array2[num] = num3;
162 num++;
163 }
164 object obj = comEventsMethod.Invoke(
array);
165 if (pVarResult !=
IntPtr.Zero)
166 {
167 Marshal.GetNativeVariantForObject(
obj, pVarResult);
168 }
169 for (i = 0;
i < pDispParams.cArgs;
i++)
170 {
171 int num4 = array2[
i];
172 if (num4 != -1)
173 {
175 }
176 }
177 }
ComEventsMethod FindMethod(int dispid)
static unsafe ref Variant GetVariant(ref Variant pSrc)