Labrador/Old Matlab Interface/bindings/libusbK.boo

3291 lines
101 KiB
Plaintext

ERROR: Z:\SVNMAIN\GoogleCode\usb-travis\trunk\libusbK\bindings\libusbK.cs(1281,9): BCE0000: enum member initializer must be integer value
#region Copyright (c) Travis Robinson
// Copyright (c) 2012 Travis Robinson <libusbdotnet@gmail.com>
// All rights reserved.
//
// C# libusbK Bindings
// Auto-generated on: 04.28.2011
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TRAVIS LEE ROBINSON
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
#endregion
// ReSharper disable InconsistentNaming
// ReSharper disable CheckNamespace
// ReSharper disable UnassignedReadonlyField
namespace libusbK
import System
import System.Diagnostics
import System.Runtime.InteropServices
public static class AllKOptions:
#region Public Members
public static LIBUSBK_FULLPATH_TO_ALTERNATE_DLL as string
#endregion
public static class AllKConstants:
#region Public Members
public static final KLST_STRING_MAX_LEN = 256
public static final LIBUSBK_DLL = 'libusbK.dll'
public static final USB_CONFIG_POWERED_MASK as byte = 192
public static final USB_ENDPOINT_ADDRESS_MASK as byte = 15
public static final USB_ENDPOINT_DIRECTION_MASK as byte = 128
#endregion
public enum PipePolicyType:
SHORT_PACKET_TERMINATE = 1
AUTO_CLEAR_STALL = 2
PIPE_TRANSFER_TIMEOUT = 3
IGNORE_SHORT_PACKETS = 4
ALLOW_PARTIAL_READS = 5
AUTO_FLUSH = 6
RAW_IO = 7
MAXIMUM_TRANSFER_SIZE = 8
RESET_PIPE_ON_RESUME = 9
ISO_START_LATENCY = 32
ISO_ALWAYS_START_ASAP = 33
ISO_NUM_FIXED_PACKETS = 34
SIMUL_PARALLEL_REQUESTS = 48
public enum PowerPolicyType:
AUTO_SUSPEND = 129
SUSPEND_DELAY = 131
public enum DeviceInformationType:
DEVICE_SPEED = 1
public enum EndpointType:
CONTROL = 0
ISOCHRONOUS = 1
BULK = 2
INTERRUPT = 3
MASK = 3
public static class ErrorCodes:
#region Public Members
public static final AccessDenied = 5
public static final Busy = 170
public static final Cancelled = 1223
public static final Empty = 4306
public static final InvalidHandle = 6
public static final InvalidParameter = 87
public static final IoIncomplete = 996
public static final IoPending = 997
public static final MoreData = 234
public static final NoMoreItems = 259
public static final NotEnoughMemory = 8
public static final NotFound = 1168
public static final NotSupported = 50
public static final OperationAborted = 995
public static final ResourceNotAvailable = 5006
public static final ResourceNotFound = 5007
public static final SemTimeout = 121
public static final Success = 0
public static final ThreadNotInProcess = 566
public static final ThreadWasSuspended = 699
public static final TooManyModules = 214
#endregion
public interface IKLIB_HANDLE:
#region Public Members
def GetContext() as IntPtr
HandleType as KLIB_HANDLE_TYPE:
get
Pointer as IntPtr:
get
def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool
def SetContext(UserContext as IntPtr) as bool
#endregion
#region Opaque library handles
public struct KLST_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.LSTK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
public struct KHOT_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.HOTK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
public struct KUSB_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.USBK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region USB Shared Device Context
public def GetSharedContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, KLIB_HANDLE_TYPE.USBSHAREDK)
public def SetSharedCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, KLIB_HANDLE_TYPE.USBSHAREDK, CleanupCallback)
public def SetSharedContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, KLIB_HANDLE_TYPE.USBSHAREDK, UserContext)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
public struct KOVL_POOL_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.OVLPOOLK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
public struct KOVL_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.OVLK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
public struct KSTM_HANDLE(IKLIB_HANDLE):
#region IKLIB_HANDLE Members
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.STMK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
#endregion
#region Public Members
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
#endregion
#region Private Members
private final mHandlePtr as IntPtr
#endregion
#endregion
#region Internal Function Imports
internal static class AllKFunctions:
#region Delegates
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable HotK_FreeAllDelegate() as void
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable HotK_FreeDelegate([In] Handle as KHOT_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable HotK_InitDelegate([Out] ref Handle as KHOT_HANDLE, [In] [Out] ref InitParams as KHOT_PARAMS) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_EnumPacketsDelegate([In] IsoContext as KISO_CONTEXT, EnumPackets as KISO_ENUM_PACKETS_CB, StartPacketIndex as int, UserState as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_FreeDelegate([In] IsoContext as KISO_CONTEXT) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_GetPacketDelegate([In] IsoContext as KISO_CONTEXT, PacketIndex as int, [Out] ref IsoPacket as KISO_PACKET) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_InitDelegate([Out] ref IsoContext as KISO_CONTEXT, NumberOfPackets as int, StartFrame as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_ReUseDelegate([In] IsoContext as KISO_CONTEXT) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_SetPacketDelegate([In] IsoContext as KISO_CONTEXT, PacketIndex as int, [In] ref IsoPacket as KISO_PACKET) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable IsoK_SetPacketsDelegate([In] IsoContext as KISO_CONTEXT, PacketSize as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_Context_FreeDelegate() as void
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_Context_InitDelegate(Heap as IntPtr, Reserved as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_CopyDriverAPIDelegate([Out] ref DriverAPI as KUSB_DRIVER_API, [In] UsbHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_GetContextDelegate([In] Handle as IntPtr, HandleType as KLIB_HANDLE_TYPE) as IntPtr
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_GetDefaultContextDelegate(HandleType as KLIB_HANDLE_TYPE) as IntPtr
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_GetProcAddressDelegate(ProcAddress as IntPtr, DriverID as int, FunctionID as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_GetVersionDelegate([Out] ref Version as KLIB_VERSION) as void
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_LoadDriverAPIDelegate([Out] ref DriverAPI as KUSB_DRIVER_API, DriverID as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_SetCleanupCallbackDelegate([In] Handle as IntPtr, HandleType as KLIB_HANDLE_TYPE, CleanupCB as KLIB_HANDLE_CLEANUP_CB) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_SetContextDelegate([In] Handle as IntPtr, HandleType as KLIB_HANDLE_TYPE, ContextValue as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LibK_SetDefaultContextDelegate(HandleType as KLIB_HANDLE_TYPE, ContextValue as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_CountDelegate([In] DeviceList as KLST_HANDLE, ref Count as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_CurrentDelegate([In] DeviceList as KLST_HANDLE, [Out] ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_EnumerateDelegate([In] DeviceList as KLST_HANDLE, EnumDevListCB as KLST_ENUM_DEVINFO_CB, Context as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_FindByVidPidDelegate([In] DeviceList as KLST_HANDLE, Vid as int, Pid as int, [Out] ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_FreeDelegate([In] DeviceList as KLST_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_InitDelegate([Out] ref DeviceList as KLST_HANDLE, Flags as KLST_FLAG) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_InitExDelegate([Out] ref DeviceList as KLST_HANDLE, Flags as KLST_FLAG, [In] ref PatternMatch as KLST_PATTERN_MATCH) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_MoveNextDelegate([In] DeviceList as KLST_HANDLE, [Out] ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable LstK_MoveResetDelegate([In] DeviceList as KLST_HANDLE) as void
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_AcquireDelegate([Out] ref OverlappedK as KOVL_HANDLE, [In] PoolHandle as KOVL_POOL_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_FreeDelegate([In] PoolHandle as KOVL_POOL_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_GetEventHandleDelegate([In] OverlappedK as KOVL_HANDLE) as IntPtr
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_InitDelegate([Out] ref PoolHandle as KOVL_POOL_HANDLE, [In] UsbHandle as KUSB_HANDLE, MaxOverlappedCount as int, Flags as KOVL_POOL_FLAG) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_IsCompleteDelegate([In] OverlappedK as KOVL_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_ReUseDelegate([In] OverlappedK as KOVL_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_ReleaseDelegate([In] OverlappedK as KOVL_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_WaitAndReleaseDelegate([In] OverlappedK as KOVL_HANDLE, TimeoutMS as int, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_WaitDelegate([In] OverlappedK as KOVL_HANDLE, TimeoutMS as int, WaitFlags as KOVL_WAIT_FLAG, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_WaitOldestDelegate([In] PoolHandle as KOVL_POOL_HANDLE, [Out] ref OverlappedK as KOVL_HANDLE, TimeoutMS as int, WaitFlags as KOVL_WAIT_FLAG, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable OvlK_WaitOrCancelDelegate([In] OverlappedK as KOVL_HANDLE, TimeoutMS as int, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_FreeDelegate([In] StreamHandle as KSTM_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_InitDelegate([Out] ref StreamHandle as KSTM_HANDLE, [In] UsbHandle as KUSB_HANDLE, PipeID as byte, MaxTransferSize as int, MaxPendingTransfers as int, MaxPendingIO as int, [In] ref Callbacks as KSTM_CALLBACK, Flags as KSTM_FLAG) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_ReadDelegate([In] StreamHandle as KSTM_HANDLE, Buffer as IntPtr, Offset as int, Length as int, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_StartDelegate([In] StreamHandle as KSTM_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_StopDelegate([In] StreamHandle as KSTM_HANDLE, TimeoutCancelMS as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable StmK_WriteDelegate([In] StreamHandle as KSTM_HANDLE, Buffer as IntPtr, Offset as int, Length as int, ref TransferredLength as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public static callable UsbK_FreeDelegate([In] InterfaceHandle as KUSB_HANDLE) as bool
#endregion
private static def constructor():
if String.IsNullOrEmpty(AllKOptions.LIBUSBK_FULLPATH_TO_ALTERNATE_DLL):
mModuleLibusbK = LoadLibraryEx(AllKConstants.LIBUSBK_DLL, IntPtr.Zero, LoadLibraryFlags.NONE)
else:
mModuleLibusbK = LoadLibraryEx(AllKOptions.LIBUSBK_FULLPATH_TO_ALTERNATE_DLL, IntPtr.Zero, LoadLibraryFlags.LOAD_WITH_ALTERED_SEARCH_PATH)
if mModuleLibusbK == IntPtr.Zero:
raise DllNotFoundException('libusbK.dll not found. Please install drivers/applications and retry.')
LoadDynamicFunctions()
#region Nested Enumerations
[Flags]
private enum LoadLibraryFlags:
NONE = 0
DONT_RESOLVE_DLL_REFERENCES = 1
LOAD_IGNORE_CODE_AUTHZ_LEVEL = 16
LOAD_LIBRARY_AS_DATAFILE = 2
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 64
LOAD_LIBRARY_AS_IMAGE_RESOURCE = 32
LOAD_WITH_ALTERED_SEARCH_PATH = 8
#endregion
#region Public Members
public static HotK_Free as HotK_FreeDelegate
public static HotK_FreeAll as HotK_FreeAllDelegate
public static HotK_Init as HotK_InitDelegate
public static IsoK_EnumPackets as IsoK_EnumPacketsDelegate
public static IsoK_Free as IsoK_FreeDelegate
public static IsoK_GetPacket as IsoK_GetPacketDelegate
public static IsoK_Init as IsoK_InitDelegate
public static IsoK_ReUse as IsoK_ReUseDelegate
public static IsoK_SetPacket as IsoK_SetPacketDelegate
public static IsoK_SetPackets as IsoK_SetPacketsDelegate
public static LibK_Context_Free as LibK_Context_FreeDelegate
public static LibK_Context_Init as LibK_Context_InitDelegate
public static LibK_CopyDriverAPI as LibK_CopyDriverAPIDelegate
public static LibK_GetContext as LibK_GetContextDelegate
public static LibK_GetDefaultContext as LibK_GetDefaultContextDelegate
public static LibK_GetProcAddress as LibK_GetProcAddressDelegate
public static LibK_GetVersion as LibK_GetVersionDelegate
public static LibK_LoadDriverAPI as LibK_LoadDriverAPIDelegate
public static LibK_SetCleanupCallback as LibK_SetCleanupCallbackDelegate
public static LibK_SetContext as LibK_SetContextDelegate
public static LibK_SetDefaultContext as LibK_SetDefaultContextDelegate
public static LstK_Count as LstK_CountDelegate
public static LstK_Current as LstK_CurrentDelegate
public static LstK_Enumerate as LstK_EnumerateDelegate
public static LstK_FindByVidPid as LstK_FindByVidPidDelegate
public static LstK_Free as LstK_FreeDelegate
public static LstK_Init as LstK_InitDelegate
public static LstK_InitEx as LstK_InitExDelegate
public static LstK_MoveNext as LstK_MoveNextDelegate
public static LstK_MoveReset as LstK_MoveResetDelegate
public static OvlK_Acquire as OvlK_AcquireDelegate
public static OvlK_Free as OvlK_FreeDelegate
public static OvlK_GetEventHandle as OvlK_GetEventHandleDelegate
public static OvlK_Init as OvlK_InitDelegate
public static OvlK_IsComplete as OvlK_IsCompleteDelegate
public static OvlK_ReUse as OvlK_ReUseDelegate
public static OvlK_Release as OvlK_ReleaseDelegate
public static OvlK_Wait as OvlK_WaitDelegate
public static OvlK_WaitAndRelease as OvlK_WaitAndReleaseDelegate
public static OvlK_WaitOldest as OvlK_WaitOldestDelegate
public static OvlK_WaitOrCancel as OvlK_WaitOrCancelDelegate
public static StmK_Free as StmK_FreeDelegate
public static StmK_Init as StmK_InitDelegate
public static StmK_Read as StmK_ReadDelegate
public static StmK_Start as StmK_StartDelegate
public static StmK_Stop as StmK_StopDelegate
public static StmK_Write as StmK_WriteDelegate
public static UsbK_Free as UsbK_FreeDelegate
#endregion
#region Private Members
[DllImport('kernel32.dll', CharSet: CharSet.Ansi, ExactSpelling: true, SetLastError: true)]
private static def GetProcAddress(hModule as IntPtr, procName as string) as IntPtr:
pass
private static def LoadDynamicFunctions():
LibK_GetVersion = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_GetVersion'), typeof(LibK_GetVersionDelegate)) cast LibK_GetVersionDelegate)
LibK_GetContext = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_GetContext'), typeof(LibK_GetContextDelegate)) cast LibK_GetContextDelegate)
LibK_SetContext = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_SetContext'), typeof(LibK_SetContextDelegate)) cast LibK_SetContextDelegate)
LibK_SetCleanupCallback = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_SetCleanupCallback'), typeof(LibK_SetCleanupCallbackDelegate)) cast LibK_SetCleanupCallbackDelegate)
LibK_LoadDriverAPI = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_LoadDriverAPI'), typeof(LibK_LoadDriverAPIDelegate)) cast LibK_LoadDriverAPIDelegate)
LibK_CopyDriverAPI = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_CopyDriverAPI'), typeof(LibK_CopyDriverAPIDelegate)) cast LibK_CopyDriverAPIDelegate)
LibK_GetProcAddress = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_GetProcAddress'), typeof(LibK_GetProcAddressDelegate)) cast LibK_GetProcAddressDelegate)
LibK_SetDefaultContext = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_SetDefaultContext'), typeof(LibK_SetDefaultContextDelegate)) cast LibK_SetDefaultContextDelegate)
LibK_GetDefaultContext = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_GetDefaultContext'), typeof(LibK_GetDefaultContextDelegate)) cast LibK_GetDefaultContextDelegate)
LibK_Context_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_Context_Init'), typeof(LibK_Context_InitDelegate)) cast LibK_Context_InitDelegate)
LibK_Context_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LibK_Context_Free'), typeof(LibK_Context_FreeDelegate)) cast LibK_Context_FreeDelegate)
UsbK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'UsbK_Free'), typeof(UsbK_FreeDelegate)) cast UsbK_FreeDelegate)
LstK_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_Init'), typeof(LstK_InitDelegate)) cast LstK_InitDelegate)
LstK_InitEx = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_InitEx'), typeof(LstK_InitExDelegate)) cast LstK_InitExDelegate)
LstK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_Free'), typeof(LstK_FreeDelegate)) cast LstK_FreeDelegate)
LstK_Enumerate = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_Enumerate'), typeof(LstK_EnumerateDelegate)) cast LstK_EnumerateDelegate)
LstK_Current = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_Current'), typeof(LstK_CurrentDelegate)) cast LstK_CurrentDelegate)
LstK_MoveNext = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_MoveNext'), typeof(LstK_MoveNextDelegate)) cast LstK_MoveNextDelegate)
LstK_MoveReset = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_MoveReset'), typeof(LstK_MoveResetDelegate)) cast LstK_MoveResetDelegate)
LstK_FindByVidPid = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_FindByVidPid'), typeof(LstK_FindByVidPidDelegate)) cast LstK_FindByVidPidDelegate)
LstK_Count = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'LstK_Count'), typeof(LstK_CountDelegate)) cast LstK_CountDelegate)
HotK_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'HotK_Init'), typeof(HotK_InitDelegate)) cast HotK_InitDelegate)
HotK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'HotK_Free'), typeof(HotK_FreeDelegate)) cast HotK_FreeDelegate)
HotK_FreeAll = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'HotK_FreeAll'), typeof(HotK_FreeAllDelegate)) cast HotK_FreeAllDelegate)
OvlK_Acquire = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_Acquire'), typeof(OvlK_AcquireDelegate)) cast OvlK_AcquireDelegate)
OvlK_Release = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_Release'), typeof(OvlK_ReleaseDelegate)) cast OvlK_ReleaseDelegate)
OvlK_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_Init'), typeof(OvlK_InitDelegate)) cast OvlK_InitDelegate)
OvlK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_Free'), typeof(OvlK_FreeDelegate)) cast OvlK_FreeDelegate)
OvlK_GetEventHandle = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_GetEventHandle'), typeof(OvlK_GetEventHandleDelegate)) cast OvlK_GetEventHandleDelegate)
OvlK_Wait = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_Wait'), typeof(OvlK_WaitDelegate)) cast OvlK_WaitDelegate)
OvlK_WaitOldest = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_WaitOldest'), typeof(OvlK_WaitOldestDelegate)) cast OvlK_WaitOldestDelegate)
OvlK_WaitOrCancel = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_WaitOrCancel'), typeof(OvlK_WaitOrCancelDelegate)) cast OvlK_WaitOrCancelDelegate)
OvlK_WaitAndRelease = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_WaitAndRelease'), typeof(OvlK_WaitAndReleaseDelegate)) cast OvlK_WaitAndReleaseDelegate)
OvlK_IsComplete = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_IsComplete'), typeof(OvlK_IsCompleteDelegate)) cast OvlK_IsCompleteDelegate)
OvlK_ReUse = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'OvlK_ReUse'), typeof(OvlK_ReUseDelegate)) cast OvlK_ReUseDelegate)
StmK_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Init'), typeof(StmK_InitDelegate)) cast StmK_InitDelegate)
StmK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Free'), typeof(StmK_FreeDelegate)) cast StmK_FreeDelegate)
StmK_Start = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Start'), typeof(StmK_StartDelegate)) cast StmK_StartDelegate)
StmK_Stop = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Stop'), typeof(StmK_StopDelegate)) cast StmK_StopDelegate)
StmK_Read = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Read'), typeof(StmK_ReadDelegate)) cast StmK_ReadDelegate)
StmK_Write = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'StmK_Write'), typeof(StmK_WriteDelegate)) cast StmK_WriteDelegate)
IsoK_Init = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_Init'), typeof(IsoK_InitDelegate)) cast IsoK_InitDelegate)
IsoK_Free = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_Free'), typeof(IsoK_FreeDelegate)) cast IsoK_FreeDelegate)
IsoK_SetPackets = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_SetPackets'), typeof(IsoK_SetPacketsDelegate)) cast IsoK_SetPacketsDelegate)
IsoK_SetPacket = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_SetPacket'), typeof(IsoK_SetPacketDelegate)) cast IsoK_SetPacketDelegate)
IsoK_GetPacket = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_GetPacket'), typeof(IsoK_GetPacketDelegate)) cast IsoK_GetPacketDelegate)
IsoK_EnumPackets = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_EnumPackets'), typeof(IsoK_EnumPacketsDelegate)) cast IsoK_EnumPacketsDelegate)
IsoK_ReUse = (Marshal.GetDelegateForFunctionPointer(GetProcAddress(mModuleLibusbK, 'IsoK_ReUse'), typeof(IsoK_ReUseDelegate)) cast IsoK_ReUseDelegate)
[DllImport('kernel32.dll')]
private static def LoadLibraryEx(lpFileName as string, hReservedNull as IntPtr, dwFlags as LoadLibraryFlags) as IntPtr:
pass
private static final mModuleLibusbK as IntPtr = IntPtr.Zero
#endregion
#endregion
#region Enumerations
public enum USBD_PIPE_TYPE:
UsbdPipeTypeControl
UsbdPipeTypeIsochronous
UsbdPipeTypeBulk
UsbdPipeTypeInterrupt
[Flags]
public enum KISO_FLAG:
NONE = 0
SET_START_FRAME = 1
public enum KLIB_HANDLE_TYPE:
HOTK
USBK
USBSHAREDK
LSTK
LSTINFOK
OVLK
OVLPOOLK
STMK
COUNT
[Flags]
public enum KLST_SYNC_FLAG:
NONE = 0
UNCHANGED = 1
ADDED = 2
REMOVED = 4
CONNECT_CHANGE = 8
MASK = 15
[Flags]
public enum KLST_FLAG:
NONE = 0
INCLUDE_RAWGUID = 1
INCLUDE_DISCONNECT = 2
public enum BMREQUEST_DIR:
HOST_TO_DEVICE = 0
DEVICE_TO_HOST = 1
public enum BMREQUEST_TYPE:
STANDARD = 0
CLASS = 1
VENDOR = 2
public enum BMREQUEST_RECIPIENT:
DEVICE = 0
INTERFACE = 1
ENDPOINT = 2
OTHER = 3
public enum USB_GETSTATUS:
SELF_POWERED = 1
REMOTE_WAKEUP_ENABLED = 2
public enum USB_DESCRIPTOR_TYPE:
DEVICE = 1
CONFIGURATION = 2
STRING = 3
INTERFACE = 4
ENDPOINT = 5
DEVICE_QUALIFIER = 6
CONFIG_POWER = 7
INTERFACE_POWER = 8
INTERFACE_ASSOCIATION = 11
public enum KUSB_PROPERTY:
DEVICE_FILE_HANDLE
COUNT
public enum KUSB_DRVID:
LIBUSBK
LIBUSB0
WINUSB
LIBUSB0_FILTER
COUNT
public enum KUSB_FNID:
Init
Free
ClaimInterface
ReleaseInterface
SetAltInterface
GetAltInterface
GetDescriptor
ControlTransfer
SetPowerPolicy
GetPowerPolicy
SetConfiguration
GetConfiguration
ResetDevice
Initialize
SelectInterface
GetAssociatedInterface
Clone
QueryInterfaceSettings
QueryDeviceInformation
SetCurrentAlternateSetting
GetCurrentAlternateSetting
QueryPipe
SetPipePolicy
GetPipePolicy
ReadPipe
WritePipe
ResetPipe
AbortPipe
FlushPipe
IsoReadPipe
IsoWritePipe
GetCurrentFrameNumber
GetOverlappedResult
GetProperty
COUNT
[Flags]
public enum KHOT_FLAG:
NONE
PLUG_ALL_ON_INIT = 1
PASS_DUPE_INSTANCE = 2
POST_USER_MESSAGE = 4
[Flags]
public enum KOVL_WAIT_FLAG:
NONE = 0
RELEASE_ON_SUCCESS = 1
RELEASE_ON_FAIL = 2
RELEASE_ON_SUCCESS_FAIL = 3
CANCEL_ON_TIMEOUT = 4
RELEASE_ON_TIMEOUT = 12
RELEASE_ALWAYS = 15
ALERTABLE = 16
[Flags]
public enum KOVL_POOL_FLAG:
NONE = 0
[Flags]
public enum KSTM_FLAG(uint):
NONE = 0
NO_PARTIAL_XFERS = 1048576
TIMEOUT_MASK = 131071
public enum KSTM_COMPLETE_RESULT:
VALID = 0
INVALID
#endregion
#region Structs
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
public struct WINUSB_PIPE_INFORMATION:
public PipeType as USBD_PIPE_TYPE
public PipeId as byte
public MaximumPacketSize as ushort
public Interval as byte
public override def ToString() as string:
return string.Format('PipeType: {0}\nPipeId: {1}\nMaximumPacketSize: {2}\nInterval: {3}\n', PipeType, (PipeId.ToString('X2') + 'h'), MaximumPacketSize, (Interval.ToString('X2') + 'h'))
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct WINUSB_SETUP_PACKET:
public RequestType as byte
public Request as byte
public Value as ushort
public Index as ushort
public Length as ushort
public override def ToString() as string:
return string.Format('RequestType: {0}\nRequest: {1}\nValue: {2}\nIndex: {3}\nLength: {4}\n', (RequestType.ToString('X2') + 'h'), (Request.ToString('X2') + 'h'), (Value.ToString('X4') + 'h'), (Index.ToString('X4') + 'h'), Length)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct KISO_PACKET:
public Offset as int
public Length as ushort
public Status as ushort
public override def ToString() as string:
return string.Format('Offset: {0}\nLength: {1}\nStatus: {2}\n', Offset, Length, (Status.ToString('X4') + 'h'))
[StructLayout(LayoutKind.Sequential)]
public struct KISO_CONTEXT:
private final mHandlePtr as IntPtr
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
public Pointer as IntPtr:
get:
return mHandlePtr
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
private struct KISO_CONTEXT_MAP:
private final Flags as KISO_FLAG
private final StartFrame as int
private final ErrorCount as short
private final NumberOfPackets as short
private final UrbHdrStatus as int
private static final ofsFlags as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'Flags').ToInt32()
private static final ofsStartFrame as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'StartFrame').ToInt32()
private static final ofsErrorCount as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'ErrorCount').ToInt32()
private static final ofsNumberOfPackets as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'NumberOfPackets').ToInt32()
private static final ofsUrbHdrStatus as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'UrbHdrStatus').ToInt32()
public Flags as KISO_FLAG:
get:
return (Marshal.ReadInt32(mHandlePtr, ofsFlags) cast KISO_FLAG)
public StartFrame as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsStartFrame)
public ErrorCount as short:
get:
return Marshal.ReadInt16(mHandlePtr, ofsErrorCount)
public NumberOfPackets as short:
get:
return Marshal.ReadInt16(mHandlePtr, ofsNumberOfPackets)
public UrbHdrStatus as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsUrbHdrStatus)
public override def ToString() as string:
return string.Format('Flags: {0}\nStartFrame: {1}\nErrorCount: {2}\nNumberOfPackets: {3}\nUrbHdrStatus: {4}\n', Flags.ToString(), StartFrame, ErrorCount, NumberOfPackets, (UrbHdrStatus.ToString('X8') + 'h'))
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
public struct KLIB_VERSION:
public Major as int
public Minor as int
public Micro as int
public Nano as int
public override def ToString() as string:
return string.Format('Major: {0}\nMinor: {1}\nMicro: {2}\nNano: {3}\n', Major, Minor, Micro, Nano)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
public struct KLST_DEV_COMMON_INFO:
public Vid as int
public Pid as int
public MI as int
// An ID that uniquely identifies a USB device.
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
public InstanceID as string
public override def ToString() as string:
return string.Format('Vid: {0}\nPid: {1}\nMI: {2}\nInstanceID: {3}\n', (Vid.ToString('X4') + 'h'), (Pid.ToString('X4') + 'h'), (MI.ToString('X2') + 'h'), InstanceID)
[StructLayout(LayoutKind.Sequential)]
public struct KLST_DEVINFO_HANDLE(IKLIB_HANDLE):
private final mHandlePtr as IntPtr
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
public Pointer as IntPtr:
get:
return mHandlePtr
public HandleType as KLIB_HANDLE_TYPE:
get:
return KLIB_HANDLE_TYPE.LSTINFOK
public def GetContext() as IntPtr:
return AllKFunctions.LibK_GetContext(mHandlePtr, HandleType)
public def SetContext(UserContext as IntPtr) as bool:
return AllKFunctions.LibK_SetContext(mHandlePtr, HandleType, UserContext)
public def SetCleanupCallback(CleanupCallback as KLIB_HANDLE_CLEANUP_CB) as bool:
return AllKFunctions.LibK_SetCleanupCallback(mHandlePtr, HandleType, CleanupCallback)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
private struct KLST_DEVINFO_MAP:
private final Common as KLST_DEV_COMMON_INFO
private final DriverID as int
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final DeviceInterfaceGUID as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final DeviceID as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final ClassGUID as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final Mfg as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final DeviceDesc as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final Service as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final SymbolicLink as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final DevicePath as string
private final LUsb0FilterIndex as int
private final Connected as bool
private final SyncFlags as KLST_SYNC_FLAG
private final BusNumber as int
private final DeviceAddress as int
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
private final SerialNumber as string
private static final ofsCommon as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'Common').ToInt32()
private static final ofsDriverID as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DriverID').ToInt32()
private static final ofsDeviceInterfaceGUID as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DeviceInterfaceGUID').ToInt32()
private static final ofsDeviceID as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DeviceID').ToInt32()
private static final ofsClassGUID as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'ClassGUID').ToInt32()
private static final ofsMfg as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'Mfg').ToInt32()
private static final ofsDeviceDesc as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DeviceDesc').ToInt32()
private static final ofsService as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'Service').ToInt32()
private static final ofsSymbolicLink as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'SymbolicLink').ToInt32()
private static final ofsDevicePath as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DevicePath').ToInt32()
private static final ofsLUsb0FilterIndex as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'LUsb0FilterIndex').ToInt32()
private static final ofsConnected as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'Connected').ToInt32()
private static final ofsSyncFlags as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'SyncFlags').ToInt32()
private static final ofsBusNumber as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'BusNumber').ToInt32()
private static final ofsDeviceAddress as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'DeviceAddress').ToInt32()
private static final ofsSerialNumber as int = Marshal.OffsetOf(typeof(KLST_DEVINFO_MAP), 'SerialNumber').ToInt32()
public Common as KLST_DEV_COMMON_INFO:
get:
return (Marshal.PtrToStructure(IntPtr((mHandlePtr.ToInt64() + ofsCommon)), typeof(KLST_DEV_COMMON_INFO)) cast KLST_DEV_COMMON_INFO)
public DriverID as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsDriverID)
public DeviceInterfaceGUID as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsDeviceInterfaceGUID)))
public DeviceID as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsDeviceID)))
public ClassGUID as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsClassGUID)))
public Mfg as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsMfg)))
public DeviceDesc as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsDeviceDesc)))
public Service as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsService)))
public SymbolicLink as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsSymbolicLink)))
public DevicePath as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsDevicePath)))
public LUsb0FilterIndex as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsLUsb0FilterIndex)
public Connected as bool:
get:
return (Marshal.ReadInt32(mHandlePtr, ofsConnected) != 0)
public SyncFlags as KLST_SYNC_FLAG:
get:
return (Marshal.ReadInt32(mHandlePtr, ofsSyncFlags) cast KLST_SYNC_FLAG)
public BusNumber as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsBusNumber)
public DeviceAddress as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsDeviceAddress)
public SerialNumber as string:
get:
return Marshal.PtrToStringAnsi(IntPtr((mHandlePtr.ToInt64() + ofsSerialNumber)))
public override def ToString() as string:
return string.Format('DriverID: {0}\nDeviceInterfaceGUID: {1}\nDeviceID: {2}\nClassGUID: {3}\nMfg: {4}\nDeviceDesc: {5}\nService: {6}\nSymbolicLink: {7}\nDevicePath: {8}\nLUsb0FilterIndex: {9}\nConnected: {10}\nSyncFlags: {11}\nBusNumber: {12}\nDeviceAddress: {13}\nSerialNumber: {14}\n', DriverID, DeviceInterfaceGUID, DeviceID, ClassGUID, Mfg, DeviceDesc, Service, SymbolicLink, DevicePath, LUsb0FilterIndex, Connected, SyncFlags.ToString(), BusNumber, DeviceAddress, SerialNumber)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Size: 1024)]
public struct KLST_PATTERN_MATCH:
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
public DeviceID as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
public DeviceInterfaceGUID as string
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
public ClassGUID as string
public override def ToString() as string:
return string.Format('DeviceID: {0}\nDeviceInterfaceGUID: {1}\nClassGUID: {2}\n', DeviceID, DeviceInterfaceGUID, ClassGUID)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_DEVICE_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public bcdUSB as ushort
public bDeviceClass as byte
public bDeviceSubClass as byte
public bDeviceProtocol as byte
public bMaxPacketSize0 as byte
public idVendor as ushort
public idProduct as ushort
public bcdDevice as ushort
public iManufacturer as byte
public iProduct as byte
public iSerialNumber as byte
public bNumConfigurations as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nbcdUSB: {2}\nbDeviceClass: {3}\nbDeviceSubClass: {4}\nbDeviceProtocol: {5}\nbMaxPacketSize0: {6}\nidVendor: {7}\nidProduct: {8}\nbcdDevice: {9}\niManufacturer: {10}\niProduct: {11}\niSerialNumber: {12}\nbNumConfigurations: {13}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), (bcdUSB.ToString('X4') + 'h'), (bDeviceClass.ToString('X2') + 'h'), (bDeviceSubClass.ToString('X2') + 'h'), (bDeviceProtocol.ToString('X2') + 'h'), bMaxPacketSize0, (idVendor.ToString('X4') + 'h'), (idProduct.ToString('X4') + 'h'), (bcdDevice.ToString('X4') + 'h'), iManufacturer, iProduct, iSerialNumber, bNumConfigurations)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_ENDPOINT_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public bEndpointAddress as byte
public bmAttributes as byte
public wMaxPacketSize as ushort
public bInterval as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nbEndpointAddress: {2}\nbmAttributes: {3}\nwMaxPacketSize: {4}\nbInterval: {5}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), (bEndpointAddress.ToString('X2') + 'h'), (bmAttributes.ToString('X2') + 'h'), wMaxPacketSize, bInterval)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_CONFIGURATION_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public wTotalLength as ushort
public bNumInterfaces as byte
public bConfigurationValue as byte
public iConfiguration as byte
public bmAttributes as byte
public MaxPower as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nwTotalLength: {2}\nbNumInterfaces: {3}\nbConfigurationValue: {4}\niConfiguration: {5}\nbmAttributes: {6}\nMaxPower: {7}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), wTotalLength, bNumInterfaces, bConfigurationValue, iConfiguration, (bmAttributes.ToString('X2') + 'h'), MaxPower)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_INTERFACE_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public bInterfaceNumber as byte
public bAlternateSetting as byte
public bNumEndpoints as byte
public bInterfaceClass as byte
public bInterfaceSubClass as byte
public bInterfaceProtocol as byte
public iInterface as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nbInterfaceNumber: {2}\nbAlternateSetting: {3}\nbNumEndpoints: {4}\nbInterfaceClass: {5}\nbInterfaceSubClass: {6}\nbInterfaceProtocol: {7}\niInterface: {8}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), bInterfaceNumber, bAlternateSetting, bNumEndpoints, (bInterfaceClass.ToString('X2') + 'h'), (bInterfaceSubClass.ToString('X2') + 'h'), (bInterfaceProtocol.ToString('X2') + 'h'), iInterface)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Unicode, Pack: 1)]
public struct USB_STRING_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
[MarshalAs(UnmanagedType.ByValTStr, SizeConst: AllKConstants.KLST_STRING_MAX_LEN)]
public bString as string
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nbString: {2}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), bString)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_COMMON_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\n', bLength, (bDescriptorType.ToString('X2') + 'h'))
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
public struct USB_INTERFACE_ASSOCIATION_DESCRIPTOR:
public bLength as byte
public bDescriptorType as byte
public bFirstInterface as byte
public bInterfaceCount as byte
public bFunctionClass as byte
public bFunctionSubClass as byte
public bFunctionProtocol as byte
public iFunction as byte
public override def ToString() as string:
return string.Format('bLength: {0}\nbDescriptorType: {1}\nbFirstInterface: {2}\nbInterfaceCount: {3}\nbFunctionClass: {4}\nbFunctionSubClass: {5}\nbFunctionProtocol: {6}\niFunction: {7}\n', bLength, (bDescriptorType.ToString('X2') + 'h'), bFirstInterface, bInterfaceCount, (bFunctionClass.ToString('X2') + 'h'), (bFunctionSubClass.ToString('X2') + 'h'), (bFunctionProtocol.ToString('X2') + 'h'), iFunction)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
public struct KUSB_DRIVER_API_INFO:
public DriverID as int
public FunctionCount as int
public override def ToString() as string:
return string.Format('DriverID: {0}\nFunctionCount: {1}\n', DriverID, FunctionCount)
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Size: 512)]
public struct KUSB_DRIVER_API:
public Info as KUSB_DRIVER_API_INFO
[MarshalAs(UnmanagedType.FunctionPtr)]
public Init as KUSB_InitDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public Free as KUSB_FreeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ClaimInterface as KUSB_ClaimInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ReleaseInterface as KUSB_ReleaseInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SetAltInterface as KUSB_SetAltInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetAltInterface as KUSB_GetAltInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetDescriptor as KUSB_GetDescriptorDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ControlTransfer as KUSB_ControlTransferDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SetPowerPolicy as KUSB_SetPowerPolicyDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetPowerPolicy as KUSB_GetPowerPolicyDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SetConfiguration as KUSB_SetConfigurationDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetConfiguration as KUSB_GetConfigurationDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ResetDevice as KUSB_ResetDeviceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public Initialize as KUSB_InitializeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SelectInterface as KUSB_SelectInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetAssociatedInterface as KUSB_GetAssociatedInterfaceDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public Clone as KUSB_CloneDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public QueryInterfaceSettings as KUSB_QueryInterfaceSettingsDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public QueryDeviceInformation as KUSB_QueryDeviceInformationDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SetCurrentAlternateSetting as KUSB_SetCurrentAlternateSettingDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetCurrentAlternateSetting as KUSB_GetCurrentAlternateSettingDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public QueryPipe as KUSB_QueryPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public SetPipePolicy as KUSB_SetPipePolicyDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetPipePolicy as KUSB_GetPipePolicyDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ReadPipe as KUSB_ReadPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public WritePipe as KUSB_WritePipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public ResetPipe as KUSB_ResetPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public AbortPipe as KUSB_AbortPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public FlushPipe as KUSB_FlushPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public IsoReadPipe as KUSB_IsoReadPipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public IsoWritePipe as KUSB_IsoWritePipeDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetCurrentFrameNumber as KUSB_GetCurrentFrameNumberDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetOverlappedResult as KUSB_GetOverlappedResultDelegate
[MarshalAs(UnmanagedType.FunctionPtr)]
public GetProperty as KUSB_GetPropertyDelegate
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Size: 2048)]
public struct KHOT_PARAMS:
public UserHwnd as IntPtr
public UserMessage as int
public Flags as KHOT_FLAG
public PatternMatch as KLST_PATTERN_MATCH
[MarshalAs(UnmanagedType.FunctionPtr)]
public OnHotPlug as KHOT_PLUG_CB
public override def ToString() as string:
return string.Format('UserHwnd: {0}\nUserMessage: {1}\nFlags: {2}\n', (UserHwnd.ToString('X16') + 'h'), (UserMessage.ToString('X8') + 'h'), Flags.ToString())
[StructLayout(LayoutKind.Sequential)]
public struct KSTM_XFER_CONTEXT:
private final mHandlePtr as IntPtr
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
public Pointer as IntPtr:
get:
return mHandlePtr
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
private struct KSTM_XFER_CONTEXT_MAP:
private final Buffer as IntPtr
private final BufferSize as int
private final TransferLength as int
private final UserState as IntPtr
private static final ofsBuffer as int = Marshal.OffsetOf(typeof(KSTM_XFER_CONTEXT_MAP), 'Buffer').ToInt32()
private static final ofsBufferSize as int = Marshal.OffsetOf(typeof(KSTM_XFER_CONTEXT_MAP), 'BufferSize').ToInt32()
private static final ofsTransferLength as int = Marshal.OffsetOf(typeof(KSTM_XFER_CONTEXT_MAP), 'TransferLength').ToInt32()
private static final ofsUserState as int = Marshal.OffsetOf(typeof(KSTM_XFER_CONTEXT_MAP), 'UserState').ToInt32()
public Buffer as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsBuffer)
public BufferSize as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsBufferSize)
public TransferLength as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsTransferLength)
public UserState as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsUserState)
set:
Marshal.WriteIntPtr(mHandlePtr, ofsUserState, value)
public override def ToString() as string:
return string.Format('Buffer: {0}\nBufferSize: {1}\nTransferLength: {2}\nUserState: {3}\n', (Buffer.ToString('X16') + 'h'), BufferSize, TransferLength, (UserState.ToString('X16') + 'h'))
[StructLayout(LayoutKind.Sequential)]
public struct KSTM_INFO:
private final mHandlePtr as IntPtr
public def constructor(Handle as IntPtr):
mHandlePtr = Handle
public Pointer as IntPtr:
get:
return mHandlePtr
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi)]
private struct KSTM_INFO_MAP:
private final UsbHandle as IntPtr
private final PipeID as byte
private final MaxPendingTransfers as int
private final MaxTransferSize as int
private final MaxPendingIO as int
private final EndpointDescriptor as USB_ENDPOINT_DESCRIPTOR
private final DriverAPI as KUSB_DRIVER_API
private final DeviceHandle as IntPtr
private final StreamHandle as IntPtr
private final UserState as IntPtr
private static final ofsUsbHandle as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'UsbHandle').ToInt32()
private static final ofsPipeID as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'PipeID').ToInt32()
private static final ofsMaxPendingTransfers as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'MaxPendingTransfers').ToInt32()
private static final ofsMaxTransferSize as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'MaxTransferSize').ToInt32()
private static final ofsMaxPendingIO as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'MaxPendingIO').ToInt32()
private static final ofsEndpointDescriptor as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'EndpointDescriptor').ToInt32()
private static final ofsDriverAPI as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'DriverAPI').ToInt32()
private static final ofsDeviceHandle as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'DeviceHandle').ToInt32()
private static final ofsStreamHandle as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'StreamHandle').ToInt32()
private static final ofsUserState as int = Marshal.OffsetOf(typeof(KSTM_INFO_MAP), 'UserState').ToInt32()
public UsbHandle as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsUsbHandle)
public PipeID as byte:
get:
return Marshal.ReadByte(mHandlePtr, ofsPipeID)
public MaxPendingTransfers as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsMaxPendingTransfers)
public MaxTransferSize as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsMaxTransferSize)
public MaxPendingIO as int:
get:
return Marshal.ReadInt32(mHandlePtr, ofsMaxPendingIO)
public EndpointDescriptor as USB_ENDPOINT_DESCRIPTOR:
get:
return (Marshal.PtrToStructure(IntPtr((mHandlePtr.ToInt64() + ofsEndpointDescriptor)), typeof(USB_ENDPOINT_DESCRIPTOR)) cast USB_ENDPOINT_DESCRIPTOR)
public DriverAPI as KUSB_DRIVER_API:
get:
return (Marshal.PtrToStructure(IntPtr((mHandlePtr.ToInt64() + ofsDriverAPI)), typeof(KUSB_DRIVER_API)) cast KUSB_DRIVER_API)
public DeviceHandle as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsDeviceHandle)
public StreamHandle as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsStreamHandle)
public UserState as IntPtr:
get:
return Marshal.ReadIntPtr(mHandlePtr, ofsUserState)
set:
Marshal.WriteIntPtr(mHandlePtr, ofsUserState, value)
public override def ToString() as string:
return string.Format('UsbHandle: {0}\nPipeID: {1}\nMaxPendingTransfers: {2}\nMaxTransferSize: {3}\nMaxPendingIO: {4}\nDeviceHandle: {5}\nStreamHandle: {6}\nUserState: {7}\n', (UsbHandle.ToString('X16') + 'h'), (PipeID.ToString('X2') + 'h'), MaxPendingTransfers, MaxTransferSize, MaxPendingIO, (DeviceHandle.ToString('X16') + 'h'), (StreamHandle.ToString('X16') + 'h'), (UserState.ToString('X16') + 'h'))
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Size: 64)]
public struct KSTM_CALLBACK:
[MarshalAs(UnmanagedType.FunctionPtr)]
public Error as KSTM_ERROR_CB
[MarshalAs(UnmanagedType.FunctionPtr)]
public Submit as KSTM_SUBMIT_CB
[MarshalAs(UnmanagedType.FunctionPtr)]
public Complete as KSTM_COMPLETE_CB
[MarshalAs(UnmanagedType.FunctionPtr)]
public Started as KSTM_STARTED_CB
[MarshalAs(UnmanagedType.FunctionPtr)]
public Stopped as KSTM_STOPPED_CB
[MarshalAs(UnmanagedType.FunctionPtr)]
public BeforeComplete as KSTM_BEFORE_COMPLETE_CB
#endregion
#region Delegates
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KLIB_HANDLE_CLEANUP_CB([In] Handle as IntPtr, HandleType as KLIB_HANDLE_TYPE, UserContext as IntPtr) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KISO_ENUM_PACKETS_CB(PacketIndex as int, [In] ref IsoPacket as KISO_PACKET, UserState as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KLST_ENUM_DEVINFO_CB([In] DeviceList as KLST_HANDLE, [In] DeviceInfo as KLST_DEVINFO_HANDLE, Context as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_InitDelegate([Out] ref InterfaceHandle as KUSB_HANDLE, [In] DevInfo as KLST_DEVINFO_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_FreeDelegate([In] InterfaceHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ClaimInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, NumberOrIndex as byte, IsIndex as bool) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ReleaseInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, NumberOrIndex as byte, IsIndex as bool) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SetAltInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, NumberOrIndex as byte, IsIndex as bool, AltSettingNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetAltInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, NumberOrIndex as byte, IsIndex as bool, ref AltSettingNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetDescriptorDelegate([In] InterfaceHandle as KUSB_HANDLE, DescriptorType as byte, Index as byte, LanguageID as ushort, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ControlTransferDelegate([In] InterfaceHandle as KUSB_HANDLE, SetupPacket as WINUSB_SETUP_PACKET, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SetPowerPolicyDelegate([In] InterfaceHandle as KUSB_HANDLE, PolicyType as int, ValueLength as int, Value as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetPowerPolicyDelegate([In] InterfaceHandle as KUSB_HANDLE, PolicyType as int, ref ValueLength as int, Value as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SetConfigurationDelegate([In] InterfaceHandle as KUSB_HANDLE, ConfigurationNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetConfigurationDelegate([In] InterfaceHandle as KUSB_HANDLE, ref ConfigurationNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ResetDeviceDelegate([In] InterfaceHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_InitializeDelegate(DeviceHandle as IntPtr, [Out] ref InterfaceHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SelectInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, NumberOrIndex as byte, IsIndex as bool) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetAssociatedInterfaceDelegate([In] InterfaceHandle as KUSB_HANDLE, AssociatedInterfaceIndex as byte, [Out] ref AssociatedInterfaceHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_CloneDelegate([In] InterfaceHandle as KUSB_HANDLE, [Out] ref DstInterfaceHandle as KUSB_HANDLE) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_QueryInterfaceSettingsDelegate([In] InterfaceHandle as KUSB_HANDLE, AltSettingIndex as byte, [Out] ref UsbAltInterfaceDescriptor as USB_INTERFACE_DESCRIPTOR) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_QueryDeviceInformationDelegate([In] InterfaceHandle as KUSB_HANDLE, InformationType as int, ref BufferLength as int, Buffer as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SetCurrentAlternateSettingDelegate([In] InterfaceHandle as KUSB_HANDLE, AltSettingNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetCurrentAlternateSettingDelegate([In] InterfaceHandle as KUSB_HANDLE, ref AltSettingNumber as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_QueryPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, AltSettingNumber as byte, PipeIndex as byte, [Out] ref PipeInformation as WINUSB_PIPE_INFORMATION) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_SetPipePolicyDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, PolicyType as int, ValueLength as int, Value as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetPipePolicyDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, PolicyType as int, ref ValueLength as int, Value as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ReadPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_WritePipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_ResetPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_AbortPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_FlushPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_IsoReadPipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as IntPtr, [In] IsoContext as KISO_CONTEXT) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_IsoWritePipeDelegate([In] InterfaceHandle as KUSB_HANDLE, PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as IntPtr, [In] IsoContext as KISO_CONTEXT) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetCurrentFrameNumberDelegate([In] InterfaceHandle as KUSB_HANDLE, ref FrameNumber as int) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetOverlappedResultDelegate([In] InterfaceHandle as KUSB_HANDLE, Overlapped as IntPtr, ref lpNumberOfBytesTransferred as int, bWait as bool) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KUSB_GetPropertyDelegate([In] InterfaceHandle as KUSB_HANDLE, PropertyType as KUSB_PROPERTY, ref PropertySize as int, Value as IntPtr) as bool
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KHOT_PLUG_CB([In] HotHandle as KHOT_HANDLE, [In] DeviceInfo as KLST_DEVINFO_HANDLE, PlugType as KLST_SYNC_FLAG) as void
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_ERROR_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int, ErrorCode as int) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_SUBMIT_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int, Overlapped as IntPtr) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_STARTED_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_STOPPED_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_COMPLETE_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int, ErrorCode as int) as int
[UnmanagedFunctionPointer(CallingConvention.Winapi, CharSet: CharSet.Ansi, SetLastError: true)]
public callable KSTM_BEFORE_COMPLETE_CB([In] StreamInfo as KSTM_INFO, [In] XferContext as KSTM_XFER_CONTEXT, XferContextIndex as int, ref ErrorCode as int) as KSTM_COMPLETE_RESULT
#endregion
public class LstK(IDisposable):
protected mHandleStruct as KLST_HANDLE
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.LstK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KLST_HANDLE(IntPtr.Zero)
mbDisposed = true
protected def Init(Flags as KLST_FLAG) as bool:
success as bool = AllKFunctions.LstK_Init(mHandleStruct, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
protected def InitEx(Flags as KLST_FLAG, ref PatternMatch as KLST_PATTERN_MATCH) as bool:
success as bool = AllKFunctions.LstK_InitEx(mHandleStruct, Flags, PatternMatch)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Public Members
public def constructor(Flags as KLST_FLAG):
success as bool = AllKFunctions.LstK_Init(mHandleStruct, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public def constructor(Flags as KLST_FLAG, ref PatternMatch as KLST_PATTERN_MATCH):
success as bool = AllKFunctions.LstK_InitEx(mHandleStruct, Flags, PatternMatch)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def Count(ref Count as int) as bool:
return AllKFunctions.LstK_Count(mHandleStruct, Count)
public virtual def Current(ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool:
return AllKFunctions.LstK_Current(mHandleStruct, DeviceInfo)
public virtual def Enumerate(EnumDevListCB as KLST_ENUM_DEVINFO_CB, Context as IntPtr) as bool:
return AllKFunctions.LstK_Enumerate(mHandleStruct, EnumDevListCB, Context)
public virtual def FindByVidPid(Vid as int, Pid as int, ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool:
return AllKFunctions.LstK_FindByVidPid(mHandleStruct, Vid, Pid, DeviceInfo)
public virtual def Free():
Dispose()
public Handle as KLST_HANDLE:
get:
return mHandleStruct
public virtual def MoveNext(ref DeviceInfo as KLST_DEVINFO_HANDLE) as bool:
return AllKFunctions.LstK_MoveNext(mHandleStruct, DeviceInfo)
public virtual def MoveReset():
AllKFunctions.LstK_MoveReset(mHandleStruct)
#endregion
public class HotK(IDisposable):
protected mHandleStruct as KHOT_HANDLE
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.HotK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KHOT_HANDLE(IntPtr.Zero)
mbDisposed = true
protected def Init(ref InitParams as KHOT_PARAMS) as bool:
success as bool = AllKFunctions.HotK_Init(mHandleStruct, InitParams)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Public Members
public def constructor(ref InitParams as KHOT_PARAMS):
success as bool = AllKFunctions.HotK_Init(mHandleStruct, InitParams)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def Free():
Dispose()
public virtual def FreeAll():
AllKFunctions.HotK_FreeAll()
public Handle as KHOT_HANDLE:
get:
return mHandleStruct
#endregion
public class UsbK(IDisposable):
protected driverAPI as KUSB_DRIVER_API
protected mHandleStruct as KUSB_HANDLE
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.UsbK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KUSB_HANDLE(IntPtr.Zero)
mbDisposed = true
protected def Init(DevInfo as KLST_DEVINFO_HANDLE) as bool:
success as bool = AllKFunctions.LibK_LoadDriverAPI(driverAPI, DevInfo.DriverID)
if not success:
raise Exception(string.Format('{0} failed loading Driver API. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
success = driverAPI.Init(mHandleStruct, DevInfo)
if not success:
raise Exception(string.Format('{0} failed initializing usb device. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
protected def Initialize(DeviceHandle as IntPtr, driverID as KUSB_DRVID) as bool:
success as bool = AllKFunctions.LibK_LoadDriverAPI(driverAPI, (driverID cast int))
if not success:
raise Exception(string.Format('{0} failed loading Driver API. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
success = driverAPI.Initialize(DeviceHandle, mHandleStruct)
if not success:
raise Exception(string.Format('{0} failed initializing usb device. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Public Members
public def constructor(DevInfo as KLST_DEVINFO_HANDLE):
success as bool = AllKFunctions.LibK_LoadDriverAPI(driverAPI, DevInfo.DriverID)
if not success:
raise Exception(string.Format('{0} failed loading Driver API. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
success = driverAPI.Init(mHandleStruct, DevInfo)
if not success:
raise Exception(string.Format('{0} failed initializing usb device. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public def constructor(DeviceHandle as IntPtr, driverID as KUSB_DRVID):
success as bool = AllKFunctions.LibK_LoadDriverAPI(driverAPI, (driverID cast int))
if not success:
raise Exception(string.Format('{0} failed loading Driver API. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
success = driverAPI.Initialize(DeviceHandle, mHandleStruct)
if not success:
raise Exception(string.Format('{0} failed initializing usb device. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def AbortPipe(PipeID as byte) as bool:
return driverAPI.AbortPipe(mHandleStruct, PipeID)
public virtual def ClaimInterface(NumberOrIndex as byte, IsIndex as bool) as bool:
return driverAPI.ClaimInterface(mHandleStruct, NumberOrIndex, IsIndex)
public virtual def Clone(ref DstInterfaceHandle as KUSB_HANDLE) as bool:
return driverAPI.Clone(mHandleStruct, DstInterfaceHandle)
public virtual def ControlTransfer(SetupPacket as WINUSB_SETUP_PACKET, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.ControlTransfer(mHandleStruct, SetupPacket, Buffer, BufferLength, LengthTransferred, Overlapped)
public virtual def ControlTransfer(SetupPacket as WINUSB_SETUP_PACKET, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.ControlTransfer(mHandleStruct, SetupPacket, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped)
public virtual def ControlTransfer(SetupPacket as WINUSB_SETUP_PACKET, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.ControlTransfer(mHandleStruct, SetupPacket, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped.Pointer)
public virtual def ControlTransfer(SetupPacket as WINUSB_SETUP_PACKET, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.ControlTransfer(mHandleStruct, SetupPacket, Buffer, BufferLength, LengthTransferred, Overlapped.Pointer)
public virtual def FlushPipe(PipeID as byte) as bool:
return driverAPI.FlushPipe(mHandleStruct, PipeID)
public virtual def Free():
Dispose()
public virtual def GetAltInterface(NumberOrIndex as byte, IsIndex as bool, ref AltSettingNumber as byte) as bool:
return driverAPI.GetAltInterface(mHandleStruct, NumberOrIndex, IsIndex, AltSettingNumber)
public virtual def GetAssociatedInterface(AssociatedInterfaceIndex as byte, ref AssociatedInterfaceHandle as KUSB_HANDLE) as bool:
return driverAPI.GetAssociatedInterface(mHandleStruct, AssociatedInterfaceIndex, AssociatedInterfaceHandle)
public virtual def GetConfiguration(ref ConfigurationNumber as byte) as bool:
return driverAPI.GetConfiguration(mHandleStruct, ConfigurationNumber)
public virtual def GetCurrentAlternateSetting(ref AltSettingNumber as byte) as bool:
return driverAPI.GetCurrentAlternateSetting(mHandleStruct, AltSettingNumber)
public virtual def GetCurrentFrameNumber(ref FrameNumber as int) as bool:
return driverAPI.GetCurrentFrameNumber(mHandleStruct, FrameNumber)
public virtual def GetDescriptor(DescriptorType as byte, Index as byte, LanguageID as int, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int) as bool:
return driverAPI.GetDescriptor(mHandleStruct, DescriptorType, Index, (LanguageID cast ushort), Buffer, BufferLength, LengthTransferred)
public virtual def GetDescriptor(DescriptorType as byte, Index as byte, LanguageID as int, Buffer as Array, BufferLength as int, ref LengthTransferred as int) as bool:
return driverAPI.GetDescriptor(mHandleStruct, DescriptorType, Index, (LanguageID cast ushort), Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred)
public virtual def GetOverlappedResult(Overlapped as IntPtr, ref lpNumberOfBytesTransferred as int, bWait as bool) as bool:
return driverAPI.GetOverlappedResult(mHandleStruct, Overlapped, lpNumberOfBytesTransferred, bWait)
public virtual def GetOverlappedResult(Overlapped as KOVL_HANDLE, ref lpNumberOfBytesTransferred as int, bWait as bool) as bool:
return driverAPI.GetOverlappedResult(mHandleStruct, Overlapped.Pointer, lpNumberOfBytesTransferred, bWait)
public virtual def GetPipePolicy(PipeID as byte, PolicyType as int, ref ValueLength as int, Value as IntPtr) as bool:
return driverAPI.GetPipePolicy(mHandleStruct, PipeID, PolicyType, ValueLength, Value)
public virtual def GetPipePolicy(PipeID as byte, PolicyType as int, ref ValueLength as int, Value as Array) as bool:
return driverAPI.GetPipePolicy(mHandleStruct, PipeID, PolicyType, ValueLength, Marshal.UnsafeAddrOfPinnedArrayElement(Value, 0))
public virtual def GetPowerPolicy(PolicyType as int, ref ValueLength as int, Value as IntPtr) as bool:
return driverAPI.GetPowerPolicy(mHandleStruct, PolicyType, ValueLength, Value)
public virtual def GetPowerPolicy(PolicyType as int, ref ValueLength as int, Value as Array) as bool:
return driverAPI.GetPowerPolicy(mHandleStruct, PolicyType, ValueLength, Marshal.UnsafeAddrOfPinnedArrayElement(Value, 0))
public virtual def GetProperty(PropertyType as KUSB_PROPERTY, ref PropertySize as int, Value as IntPtr) as bool:
return driverAPI.GetProperty(mHandleStruct, PropertyType, PropertySize, Value)
public virtual def GetProperty(PropertyType as KUSB_PROPERTY, ref PropertySize as int, Value as Array) as bool:
return driverAPI.GetProperty(mHandleStruct, PropertyType, PropertySize, Marshal.UnsafeAddrOfPinnedArrayElement(Value, 0))
public Handle as KUSB_HANDLE:
get:
return mHandleStruct
public virtual def IsoReadPipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as IntPtr, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoReadPipe(mHandleStruct, PipeID, Buffer, BufferLength, Overlapped, IsoContext)
public virtual def IsoReadPipe(PipeID as byte, Buffer as Array, BufferLength as int, Overlapped as IntPtr, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoReadPipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, Overlapped, IsoContext)
public virtual def IsoReadPipe(PipeID as byte, Buffer as Array, BufferLength as int, Overlapped as KOVL_HANDLE, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoReadPipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, Overlapped.Pointer, IsoContext)
public virtual def IsoReadPipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as KOVL_HANDLE, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoReadPipe(mHandleStruct, PipeID, Buffer, BufferLength, Overlapped.Pointer, IsoContext)
public virtual def IsoWritePipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as IntPtr, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoWritePipe(mHandleStruct, PipeID, Buffer, BufferLength, Overlapped, IsoContext)
public virtual def IsoWritePipe(PipeID as byte, Buffer as Array, BufferLength as int, Overlapped as IntPtr, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoWritePipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, Overlapped, IsoContext)
public virtual def IsoWritePipe(PipeID as byte, Buffer as Array, BufferLength as int, Overlapped as KOVL_HANDLE, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoWritePipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, Overlapped.Pointer, IsoContext)
public virtual def IsoWritePipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, Overlapped as KOVL_HANDLE, IsoContext as KISO_CONTEXT) as bool:
return driverAPI.IsoWritePipe(mHandleStruct, PipeID, Buffer, BufferLength, Overlapped.Pointer, IsoContext)
public virtual def QueryDeviceInformation(InformationType as int, ref BufferLength as int, Buffer as IntPtr) as bool:
return driverAPI.QueryDeviceInformation(mHandleStruct, InformationType, BufferLength, Buffer)
public virtual def QueryInterfaceSettings(AltSettingIndex as byte, ref UsbAltInterfaceDescriptor as USB_INTERFACE_DESCRIPTOR) as bool:
return driverAPI.QueryInterfaceSettings(mHandleStruct, AltSettingIndex, UsbAltInterfaceDescriptor)
public virtual def QueryPipe(AltSettingNumber as byte, PipeIndex as byte, ref PipeInformation as WINUSB_PIPE_INFORMATION) as bool:
return driverAPI.QueryPipe(mHandleStruct, AltSettingNumber, PipeIndex, PipeInformation)
public virtual def ReadPipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.ReadPipe(mHandleStruct, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped)
public virtual def ReadPipe(PipeID as byte, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.ReadPipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped)
public virtual def ReadPipe(PipeID as byte, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.ReadPipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped.Pointer)
public virtual def ReadPipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.ReadPipe(mHandleStruct, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped.Pointer)
public virtual def ReleaseInterface(NumberOrIndex as byte, IsIndex as bool) as bool:
return driverAPI.ReleaseInterface(mHandleStruct, NumberOrIndex, IsIndex)
public virtual def ResetDevice() as bool:
return driverAPI.ResetDevice(mHandleStruct)
public virtual def ResetPipe(PipeID as byte) as bool:
return driverAPI.ResetPipe(mHandleStruct, PipeID)
public virtual def SelectInterface(NumberOrIndex as byte, IsIndex as bool) as bool:
return driverAPI.SelectInterface(mHandleStruct, NumberOrIndex, IsIndex)
public virtual def SetAltInterface(NumberOrIndex as byte, IsIndex as bool, AltSettingNumber as byte) as bool:
return driverAPI.SetAltInterface(mHandleStruct, NumberOrIndex, IsIndex, AltSettingNumber)
public virtual def SetConfiguration(ConfigurationNumber as byte) as bool:
return driverAPI.SetConfiguration(mHandleStruct, ConfigurationNumber)
public virtual def SetCurrentAlternateSetting(AltSettingNumber as byte) as bool:
return driverAPI.SetCurrentAlternateSetting(mHandleStruct, AltSettingNumber)
public virtual def SetPipePolicy(PipeID as byte, PolicyType as int, ValueLength as int, Value as IntPtr) as bool:
return driverAPI.SetPipePolicy(mHandleStruct, PipeID, PolicyType, ValueLength, Value)
public virtual def SetPipePolicy(PipeID as byte, PolicyType as int, ValueLength as int, Value as Array) as bool:
return driverAPI.SetPipePolicy(mHandleStruct, PipeID, PolicyType, ValueLength, Marshal.UnsafeAddrOfPinnedArrayElement(Value, 0))
public virtual def SetPowerPolicy(PolicyType as int, ValueLength as int, Value as IntPtr) as bool:
return driverAPI.SetPowerPolicy(mHandleStruct, PolicyType, ValueLength, Value)
public virtual def SetPowerPolicy(PolicyType as int, ValueLength as int, Value as Array) as bool:
return driverAPI.SetPowerPolicy(mHandleStruct, PolicyType, ValueLength, Marshal.UnsafeAddrOfPinnedArrayElement(Value, 0))
public virtual def WritePipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.WritePipe(mHandleStruct, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped)
public virtual def WritePipe(PipeID as byte, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as IntPtr) as bool:
return driverAPI.WritePipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped)
public virtual def WritePipe(PipeID as byte, Buffer as Array, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.WritePipe(mHandleStruct, PipeID, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), BufferLength, LengthTransferred, Overlapped.Pointer)
public virtual def WritePipe(PipeID as byte, Buffer as IntPtr, BufferLength as int, ref LengthTransferred as int, Overlapped as KOVL_HANDLE) as bool:
return driverAPI.WritePipe(mHandleStruct, PipeID, Buffer, BufferLength, LengthTransferred, Overlapped.Pointer)
#endregion
public class OvlK(IDisposable):
protected mHandleStruct as KOVL_POOL_HANDLE
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.OvlK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KOVL_POOL_HANDLE(IntPtr.Zero)
mbDisposed = true
protected def Init(UsbHandle as KUSB_HANDLE, MaxOverlappedCount as int, Flags as KOVL_POOL_FLAG) as bool:
success as bool = AllKFunctions.OvlK_Init(mHandleStruct, UsbHandle, MaxOverlappedCount, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Public Members
public def constructor(UsbHandle as KUSB_HANDLE, MaxOverlappedCount as int, Flags as KOVL_POOL_FLAG):
success as bool = AllKFunctions.OvlK_Init(mHandleStruct, UsbHandle, MaxOverlappedCount, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def Acquire(ref OverlappedK as KOVL_HANDLE) as bool:
return AllKFunctions.OvlK_Acquire(OverlappedK, mHandleStruct)
public virtual def Free():
Dispose()
public virtual def GetEventHandle(OverlappedK as KOVL_HANDLE) as IntPtr:
return AllKFunctions.OvlK_GetEventHandle(OverlappedK)
public Handle as KOVL_POOL_HANDLE:
get:
return mHandleStruct
public virtual def IsComplete(OverlappedK as KOVL_HANDLE) as bool:
return AllKFunctions.OvlK_IsComplete(OverlappedK)
public virtual def ReUse(OverlappedK as KOVL_HANDLE) as bool:
return AllKFunctions.OvlK_ReUse(OverlappedK)
public virtual def Release(OverlappedK as KOVL_HANDLE) as bool:
return AllKFunctions.OvlK_Release(OverlappedK)
public virtual def Wait(OverlappedK as KOVL_HANDLE, TimeoutMS as int, WaitFlags as KOVL_WAIT_FLAG, ref TransferredLength as int) as bool:
return AllKFunctions.OvlK_Wait(OverlappedK, TimeoutMS, WaitFlags, TransferredLength)
public virtual def WaitAndRelease(OverlappedK as KOVL_HANDLE, TimeoutMS as int, ref TransferredLength as int) as bool:
return AllKFunctions.OvlK_WaitAndRelease(OverlappedK, TimeoutMS, TransferredLength)
public virtual def WaitOldest(ref OverlappedK as KOVL_HANDLE, TimeoutMS as int, WaitFlags as KOVL_WAIT_FLAG, ref TransferredLength as int) as bool:
return AllKFunctions.OvlK_WaitOldest(mHandleStruct, OverlappedK, TimeoutMS, WaitFlags, TransferredLength)
public virtual def WaitOrCancel(OverlappedK as KOVL_HANDLE, TimeoutMS as int, ref TransferredLength as int) as bool:
return AllKFunctions.OvlK_WaitOrCancel(OverlappedK, TimeoutMS, TransferredLength)
#endregion
public class StmK(IDisposable):
protected mHandleStruct as KSTM_HANDLE
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.StmK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KSTM_HANDLE(IntPtr.Zero)
mbDisposed = true
protected def Init(UsbHandle as KUSB_HANDLE, PipeID as byte, MaxTransferSize as int, MaxPendingTransfers as int, MaxPendingIO as int, ref Callbacks as KSTM_CALLBACK, Flags as KSTM_FLAG) as bool:
success as bool = AllKFunctions.StmK_Init(mHandleStruct, UsbHandle, PipeID, MaxTransferSize, MaxPendingTransfers, MaxPendingIO, Callbacks, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Public Members
public def constructor(UsbHandle as KUSB_HANDLE, PipeID as byte, MaxTransferSize as int, MaxPendingTransfers as int, MaxPendingIO as int, ref Callbacks as KSTM_CALLBACK, Flags as KSTM_FLAG):
success as bool = AllKFunctions.StmK_Init(mHandleStruct, UsbHandle, PipeID, MaxTransferSize, MaxPendingTransfers, MaxPendingIO, Callbacks, Flags)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def Free():
Dispose()
public Handle as KSTM_HANDLE:
get:
return mHandleStruct
public virtual def Read(Buffer as IntPtr, Offset as int, Length as int, ref TransferredLength as int) as bool:
return AllKFunctions.StmK_Read(mHandleStruct, Buffer, Offset, Length, TransferredLength)
public virtual def Read(Buffer as Array, Offset as int, Length as int, ref TransferredLength as int) as bool:
return AllKFunctions.StmK_Read(mHandleStruct, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), Offset, Length, TransferredLength)
public virtual def Start() as bool:
return AllKFunctions.StmK_Start(mHandleStruct)
public virtual def Stop(TimeoutCancelMS as int) as bool:
return AllKFunctions.StmK_Stop(mHandleStruct, TimeoutCancelMS)
public virtual def Write(Buffer as IntPtr, Offset as int, Length as int, ref TransferredLength as int) as bool:
return AllKFunctions.StmK_Write(mHandleStruct, Buffer, Offset, Length, TransferredLength)
public virtual def Write(Buffer as Array, Offset as int, Length as int, ref TransferredLength as int) as bool:
return AllKFunctions.StmK_Write(mHandleStruct, Marshal.UnsafeAddrOfPinnedArrayElement(Buffer, 0), Offset, Length, TransferredLength)
#endregion
public class IsoK(IDisposable):
protected mHandleStruct as KISO_CONTEXT
protected mbDisposed as bool
protected def constructor():
pass
#region IDisposable Members
public virtual def Dispose():
Dispose(true)
GC.SuppressFinalize(self)
#endregion
def destructor():
Dispose(false)
protected virtual def Dispose(disposing as bool):
if not mbDisposed:
if mHandleStruct.Pointer != IntPtr.Zero:
AllKFunctions.IsoK_Free(mHandleStruct)
Debug.Print('{0} Dispose: Freed Handle:{1:X16}h Explicit:{2}', GetType().Name, mHandleStruct.Pointer.ToInt64(), disposing)
else:
Debug.Print('{0} Dispose: [WARNING] Handle is null', GetType().Name)
mHandleStruct = KISO_CONTEXT(IntPtr.Zero)
mbDisposed = true
protected def Init(NumberOfPackets as int, StartFrame as int) as bool:
success as bool = AllKFunctions.IsoK_Init(mHandleStruct, NumberOfPackets, StartFrame)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
return true
#region Nested Structs
[StructLayout(LayoutKind.Sequential, CharSet: CharSet.Ansi, Pack: 1)]
private struct KISO_CONTEXT_MAP:
private final Flags as KISO_FLAG
private final StartFrame as int
private final ErrorCount as short
private final NumberOfPackets as short
private final UrbHdrStatus as int
#endregion
#region Public Members
public def constructor(NumberOfPackets as int, StartFrame as int):
success as bool = AllKFunctions.IsoK_Init(mHandleStruct, NumberOfPackets, StartFrame)
if not success:
raise Exception(string.Format('{0} failed initializing. ErrorCode={1:X8}h', GetType().Name, Marshal.GetLastWin32Error()))
Debug.Print('{0} Init: handle 0x{1:X16}', GetType().Name, mHandleStruct.Pointer.ToInt64())
public virtual def EnumPackets(EnumPackets as KISO_ENUM_PACKETS_CB, StartPacketIndex as int, UserState as IntPtr) as bool:
return AllKFunctions.IsoK_EnumPackets(mHandleStruct, EnumPackets, StartPacketIndex, UserState)
public ErrorCount as short:
get:
return Marshal.ReadInt16(mHandleStruct.Pointer, ofsErrorCount)
set:
Marshal.WriteInt16(mHandleStruct.Pointer, ofsErrorCount, value)
public Flags as KISO_FLAG:
get:
return (Marshal.ReadInt32(mHandleStruct.Pointer, ofsFlags) cast KISO_FLAG)
set:
Marshal.WriteInt32(mHandleStruct.Pointer, ofsFlags, (value cast int))
public virtual def Free():
Dispose()
public virtual def GetPacket(PacketIndex as int, ref IsoPacket as KISO_PACKET) as bool:
return AllKFunctions.IsoK_GetPacket(mHandleStruct, PacketIndex, IsoPacket)
public Handle as KISO_CONTEXT:
get:
return mHandleStruct
public NumberOfPackets as short:
get:
return Marshal.ReadInt16(mHandleStruct.Pointer, ofsNumberOfPackets)
set:
Marshal.WriteInt16(mHandleStruct.Pointer, ofsNumberOfPackets, value)
public virtual def ReUse() as bool:
return AllKFunctions.IsoK_ReUse(mHandleStruct)
public virtual def SetPacket(PacketIndex as int, ref IsoPacket as KISO_PACKET) as bool:
return AllKFunctions.IsoK_SetPacket(mHandleStruct, PacketIndex, IsoPacket)
public virtual def SetPackets(PacketSize as int) as bool:
return AllKFunctions.IsoK_SetPackets(mHandleStruct, PacketSize)
public StartFrame as int:
get:
return Marshal.ReadInt32(mHandleStruct.Pointer, ofsStartFrame)
set:
Marshal.WriteInt32(mHandleStruct.Pointer, ofsStartFrame, value)
public UrbHdrStatus as int:
get:
return Marshal.ReadInt32(mHandleStruct.Pointer, ofsUrbHdrStatus)
set:
Marshal.WriteInt32(mHandleStruct.Pointer, ofsUrbHdrStatus, value)
#endregion
#region Private Members
private static final ofsErrorCount as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'ErrorCount').ToInt32()
private static final ofsFlags as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'Flags').ToInt32()
private static final ofsNumberOfPackets as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'NumberOfPackets').ToInt32()
private static final ofsStartFrame as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'StartFrame').ToInt32()
private static final ofsUrbHdrStatus as int = Marshal.OffsetOf(typeof(KISO_CONTEXT_MAP), 'UrbHdrStatus').ToInt32()
#endregion