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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientDeviceAuthVTable
	{
		public IntPtr AuthorizeLocalDevice0;
		public IntPtr DeauthorizeLocalDevice1;
		public IntPtr DeauthorizeRemoteDevice2;
		public IntPtr RequestAuthorizationInfos3;
		public IntPtr GetDeviceAuthorizations4;
		public IntPtr GetDeviceAuthorizationInfo5;
		public IntPtr GetAuthorizedBorrowsers6;
		public IntPtr GetLocalUsers7;
		public IntPtr GetBorrowserInfo8;
		public IntPtr UpateAuthorizedBorrowers9;
		public IntPtr GetSharedLibraryLockedBy10;
		public IntPtr GetSharedLibraryOwners11;
		private IntPtr DTorIClientDeviceAuth12;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTDEVICEAUTH_INTERFACE_VERSION001")]
	public class IClientDeviceAuth : InteropHelp.NativeWrapper<IClientDeviceAuthVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeAuthorizeLocalDeviceSU( IntPtr thisptr, string pubUnk, UInt32 cubUnk );
		public UInt64 AuthorizeLocalDevice( string pubUnk, UInt32 cubUnk ) 
		{
			return this.GetFunction<NativeAuthorizeLocalDeviceSU>( this.Functions.AuthorizeLocalDevice0 )( this.ObjectAddress, pubUnk, cubUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeDeauthorizeLocalDeviceU( IntPtr thisptr, UInt32 uUnk );
		public UInt64 DeauthorizeLocalDevice( UInt32 uUnk ) 
		{
			return this.GetFunction<NativeDeauthorizeLocalDeviceU>( this.Functions.DeauthorizeLocalDevice1 )( this.ObjectAddress, uUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeDeauthorizeRemoteDeviceU( IntPtr thisptr, UInt64 uUnk );
		public UInt64 DeauthorizeRemoteDevice( UInt64 uUnk ) 
		{
			return this.GetFunction<NativeDeauthorizeRemoteDeviceU>( this.Functions.DeauthorizeRemoteDevice2 )( this.ObjectAddress, uUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeRequestAuthorizationInfos( IntPtr thisptr );
		public UInt64 RequestAuthorizationInfos(  ) 
		{
			return this.GetFunction<NativeRequestAuthorizationInfos>( this.Functions.RequestAuthorizationInfos3 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetDeviceAuthorizationsUUB( IntPtr thisptr, ref UInt64 arg0, UInt32 arg1, [MarshalAs(UnmanagedType.I1)] bool arg2 );
		public UInt32 GetDeviceAuthorizations( ref UInt64 arg0, UInt32 arg1, bool arg2 ) 
		{
			return this.GetFunction<NativeGetDeviceAuthorizationsUUB>( this.Functions.GetDeviceAuthorizations4 )( this.ObjectAddress, ref arg0, arg1, arg2 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetDeviceAuthorizationInfoUUUBSISISIU( IntPtr thisptr, UInt64 arg0, ref UInt32 arg1, ref UInt32 arg2, ref bool arg3, StringBuilder arg4, Int32 arg5, StringBuilder arg6, Int32 arg7, StringBuilder arg8, Int32 arg9, ref UInt32 arg10 );
		public bool GetDeviceAuthorizationInfo( UInt64 arg0, ref UInt32 arg1, ref UInt32 arg2, ref bool arg3, StringBuilder arg4, Int32 arg5, StringBuilder arg6, Int32 arg7, StringBuilder arg8, Int32 arg9, ref UInt32 arg10 ) 
		{
			return this.GetFunction<NativeGetDeviceAuthorizationInfoUUUBSISISIU>( this.Functions.GetDeviceAuthorizationInfo5 )( this.ObjectAddress, arg0, ref arg1, ref arg2, ref arg3, arg4, arg5, arg6, arg7, arg8, arg9, ref arg10 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetAuthorizedBorrowsersUU( IntPtr thisptr, ref UInt32 arg0, UInt32 arg1 );
		public UInt32 GetAuthorizedBorrowsers( ref UInt32 arg0, UInt32 arg1 ) 
		{
			return this.GetFunction<NativeGetAuthorizedBorrowsersUU>( this.Functions.GetAuthorizedBorrowsers6 )( this.ObjectAddress, ref arg0, arg1 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetLocalUsersUU( IntPtr thisptr, ref UInt32 arg0, UInt32 arg1 );
		public UInt32 GetLocalUsers( ref UInt32 arg0, UInt32 arg1 ) 
		{
			return this.GetFunction<NativeGetLocalUsersUU>( this.Functions.GetLocalUsers7 )( this.ObjectAddress, ref arg0, arg1 ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeGetBorrowserInfoUSIB( IntPtr thisptr, UInt32 arg0, StringBuilder arg1, Int32 arg2, ref bool arg3 );
		public bool GetBorrowserInfo( UInt32 arg0, StringBuilder arg1, Int32 arg2, ref bool arg3 ) 
		{
			return this.GetFunction<NativeGetBorrowserInfoUSIB>( this.Functions.GetBorrowserInfo8 )( this.ObjectAddress, arg0, arg1, arg2, ref arg3 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt64 NativeUpateAuthorizedBorrowersUUB( IntPtr thisptr, ref UInt32 arg0, UInt32 arg1, [MarshalAs(UnmanagedType.I1)] bool arg2 );
		public UInt64 UpateAuthorizedBorrowers( ref UInt32 arg0, UInt32 arg1, bool arg2 ) 
		{
			return this.GetFunction<NativeUpateAuthorizedBorrowersUUB>( this.Functions.UpateAuthorizedBorrowers9 )( this.ObjectAddress, ref arg0, arg1, arg2 ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetSharedLibraryLockedByU( IntPtr thisptr, UInt32 uUnk );
		public UInt32 GetSharedLibraryLockedBy( UInt32 uUnk ) 
		{
			return this.GetFunction<NativeGetSharedLibraryLockedByU>( this.Functions.GetSharedLibraryLockedBy10 )( this.ObjectAddress, uUnk ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate UInt32 NativeGetSharedLibraryOwnersUU( IntPtr thisptr, ref UInt32 arg0, UInt32 arg1 );
		public UInt32 GetSharedLibraryOwners( ref UInt32 arg0, UInt32 arg1 ) 
		{
			return this.GetFunction<NativeGetSharedLibraryOwnersUU>( this.Functions.GetSharedLibraryOwners11 )( this.ObjectAddress, ref arg0, arg1 ); 
		}
		
	};
}
