Marshal class http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemRuntimeInterOpServicesMarshalClasStopic.asp
Marshal.allochglobal method http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemRuntimeInterOpServicesMarshalClassallochglobaltopic.asp
Marshal.FreeHGlobal Method http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemRuntimeInteropServicesMarshalClassFreeHGlobalTopic.aspHow to call the EnumJobs function from a Visual Basic.NET applicationhttp: //support.microsoft.com/default. ? aspx scid = kb; en-us; 821769Example: Public Function DatatoDeserial (ByVal datas () As Byte, ByVal type_to_change As Type, _ ByVal NumJub As Long) As Object 'Returns the size of the JOB_INFO_2 structure Dim Data_to_Size As Long = Marshal .SizeOf (type_to_change) If Data_to_Size> datas.Length Then Return Nothing End If Dim buffer As IntPtr = Marshal.AllocHGlobal (Data_to_Size) Dim startindex As Long Dim i As Integer For i = 0 To NumJub - 1 If i = 0 Then startindex = 0 Else StartIndex = StartIndex Data_TO_SIZE END IF NEXT 'COPY DATA from The Datas Array to The Unmanaged Memory Pointer. Mar shal.Copy (datas, startindex, buffer, Data_to_Size) 'Marshal data from the buffer pointer to a managed object. Dim result_obj As Object = Marshal.PtrToStructure (buffer, type_to_change)' Free the memory that is allocated from the unmanaged memory. Marshal .Freehglobal (buffer) Return RESULT_OBJ END FUNCTION