Ejemplo n.º 1
0
            internal static IntPtr GetUnmanaged()
            {
                DataObjectStruct data_object;
                IntPtr           data_object_ptr;
                long             offset;

                data_object = new DataObjectStruct();

                data_object.QueryInterface        = Win32DnD.DOQueryInterface;
                data_object.AddRef                = Win32DnD.DOAddRef;
                data_object.Release               = Win32DnD.DORelease;
                data_object.GetData               = Win32DnD.GetData;
                data_object.GetDataHere           = Win32DnD.GetDataHere;
                data_object.QueryGetData          = Win32DnD.QueryGetData;
                data_object.GetCanonicalFormatEtc = Win32DnD.GetCanonicalFormatEtc;
                data_object.SetData               = Win32DnD.SetData;
                data_object.EnumFormatEtc         = Win32DnD.EnumFormatEtc;
                data_object.DAdvise               = Win32DnD.DAdvise;
                data_object.DUnadvise             = Win32DnD.DUnadvise;
                data_object.EnumDAdvise           = Win32DnD.EnumDAdvise;

                data_object_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(DataObjectStruct)));
                Marshal.StructureToPtr(data_object, data_object_ptr, false);

                // Update vtbl pointer
                offset  = data_object_ptr.ToInt64();
                offset += Marshal.SizeOf(typeof(IntPtr));
                Marshal.WriteIntPtr(data_object_ptr, new IntPtr(offset));

                return(data_object_ptr);
            }
Ejemplo n.º 2
0
			internal static IntPtr GetUnmanaged() {
				DataObjectStruct	data_object;
				IntPtr			data_object_ptr;
				long			offset;

				data_object = new DataObjectStruct();

				data_object.QueryInterface = Win32DnD.DOQueryInterface;
				data_object.AddRef = Win32DnD.DOAddRef;
				data_object.Release = Win32DnD.DORelease;
				data_object.GetData = Win32DnD.GetData;
				data_object.GetDataHere = Win32DnD.GetDataHere;
				data_object.QueryGetData = Win32DnD.QueryGetData;
				data_object.GetCanonicalFormatEtc = Win32DnD.GetCanonicalFormatEtc;
				data_object.SetData = Win32DnD.SetData;
				data_object.EnumFormatEtc = Win32DnD.EnumFormatEtc;
				data_object.DAdvise = Win32DnD.DAdvise;
				data_object.DUnadvise = Win32DnD.DUnadvise;
				data_object.EnumDAdvise = Win32DnD.EnumDAdvise;

				data_object_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(DataObjectStruct)));
				Marshal.StructureToPtr(data_object, data_object_ptr, false);

				// Update vtbl pointer
				offset = data_object_ptr.ToInt64();
				offset += Marshal.SizeOf(typeof(IntPtr));
				Marshal.WriteIntPtr(data_object_ptr, new IntPtr(offset));
				
				return data_object_ptr;
			}