System.Drawing.ComIStreamMarshaler.ManagedToNativeWrapper.ManagedToNativeWrapper C# (CSharp) Method

ManagedToNativeWrapper() private method

private ManagedToNativeWrapper ( IStream managedInterface ) : System
managedInterface IStream
return System
			private ManagedToNativeWrapper(IStream managedInterface)
			{
				IStreamInterface newInterface;

				lock (managedVtable)
				{
					// Vtable may have been disposed when shutting down
					if (vtableRefCount == 0 && comVtable == IntPtr.Zero)
						CreateVtable();
					vtableRefCount++;
				}

				try
				{
					this.managedInterface = managedInterface;
					gcHandle = GCHandle.Alloc(this);

					newInterface = new IStreamInterface();
					newInterface.lpVtbl = comVtable;
					newInterface.gcHandle = (IntPtr)gcHandle;
					comInterface = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IStreamInterface)));
					Marshal.StructureToPtr(newInterface, comInterface, false);
				}
				catch
				{
					this.Dispose();
					throw;
				}
			}

Same methods

ComIStreamMarshaler.ManagedToNativeWrapper::ManagedToNativeWrapper ( ) : System