// This file is automatically generated.
using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientGameCoordinatorVTable
	{
		public IntPtr SendMessage0;
		public IntPtr IsMessageAvailable1;
		public IntPtr RetrieveMessage2;
		private IntPtr DTorIClientGameCoordinator3;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTGAMECOORDINATOR_INTERFACE_VERSION001")]
	public class IClientGameCoordinator : InteropHelp.NativeWrapper<IClientGameCoordinatorVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EGCResults NativeSendMessageUUBU( IntPtr thisptr, UInt32 unAppID, UInt32 unMsgType, Byte[] pubData, UInt32 cubData );
		public EGCResults SendMessage( UInt32 unAppID, UInt32 unMsgType, Byte[] pubData ) 
		{
			return this.GetFunction<NativeSendMessageUUBU>( this.Functions.SendMessage0 )( this.ObjectAddress, unAppID, unMsgType, pubData, (UInt32) pubData.Length ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeIsMessageAvailableUU( IntPtr thisptr, UInt32 unAppID, ref UInt32 pcubMsgSize );
		public bool IsMessageAvailable( UInt32 unAppID, ref UInt32 pcubMsgSize ) 
		{
			return this.GetFunction<NativeIsMessageAvailableUU>( this.Functions.IsMessageAvailable1 )( this.ObjectAddress, unAppID, ref pcubMsgSize ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate EGCResults NativeRetrieveMessageUUBUU( IntPtr thisptr, UInt32 unAppID, ref UInt32 punMsgType, Byte[] pubDest, UInt32 cubDest, ref UInt32 pcubMsgSize );
		public EGCResults RetrieveMessage( UInt32 unAppID, ref UInt32 punMsgType, Byte[] pubDest, ref UInt32 pcubMsgSize ) 
		{
			return this.GetFunction<NativeRetrieveMessageUUBUU>( this.Functions.RetrieveMessage2 )( this.ObjectAddress, unAppID, ref punMsgType, pubDest, (UInt32) pubDest.Length, ref pcubMsgSize ); 
		}
		
	};
}
