' !! this file should not be modified Attribute VB_Name = "Module1" ' API functions Declare Function DCGetInfo Lib "DinkeyChange.dll" (ByVal type_mask As Long, ByVal model_mask As Long, ByVal prodcode_mask As Any, ByVal array_length As Long, _ num_found As Long, type_array As FixedIntegerArray, model_array As FixedIntegerArray, prodcode_array As FixedByteArray, dongle_number_array As FixedIntegerArray, update_number_array As FixedIntegerArray) As Long Declare Function DCGetDiagnosticInfo Lib "DinkeyChange.dll" (ByVal DiagFileName As Any) As Long Declare Function DCDoUpdateCodeString Lib "DinkeyChange.dll" (ByVal UpdateCode As Any, confirmation_code As Long, extended_error As Long) As Long Declare Function DCDoUpdateCodeFromFile Lib "DinkeyChange.dll" (ByVal UpdateCodeFile As Any, confirmation_code As Long, extended_error As Long) As Long Declare Function DCRestoreDinkeyFDLite Lib "DinkeyChange.dll" () As Long Declare Function DCGetMachineID Lib "DinkeyChange.dll" (machineID As Long, extended_error As Long) As Long Declare Function DCDownloadTempSoftwareKey Lib "DinkeyChange.dll" (ByVal machineID As Long, extended_error As Long) As Long Declare Function DCDownloadDemoSoftwareKey Lib "DinkeyChange.dll" (ByVal machineID As Long, ByVal ProdCode As Any, ByVal model As Long, extended_error As Long) As Long ' maximum number of USB dongles that can be attached to a machine at any one time Public Const MAX_USB_DEVICES = 128 ' mask values Public Const TYPE_MASK_PRO = 1 Public Const TYPE_MASK_FD = 2 Public Const TYPE_MASK_ALL = (TYPE_MASK_PRO Or TYPE_MASK_FD) Public Const MODEL_MASK_LITE = 1 Public Const MODEL_MASK_PLUS = 2 Public Const MODEL_MASK_NET = 4 Public Const MODEL_MASK_ALL = (MODEL_MASK_LITE Or MODEL_MASK_PLUS Or MODEL_MASK_NET) Public Const MODEL_MASK_DEFAULT = (MODEL_MASK_PLUS Or MODEL_MASK_NET) ' type values for DCGetInfo (returned in the array) Public Const TYPE_PRO = 1 Public Const TYPE_FD = 2 ' model values for DCGetInfo (returned in the array) Public Const MODEL_LITE = 1 Public Const MODEL_PLUS = 2 Public Const MODEL_NET5 = 4 Public Const MODEL_NETU = 7 ' model values for DCDownloadDemoSoftwareKey Public Const SWKEY_MODEL_DEFAULT = &HFFFFFFFF ' NB this assumes that the Demo Software Key Template was created with only one valid dongle model Public Const SWKEY_MODEL_PRO_LITE = 0 Public Const SWKEY_MODEL_PRO_PLUS = 1 Public Const SWKEY_MODEL_PRO_NET = 2 Public Const SWKEY_MODEL_FD_LITE = 3 Public Const SWKEY_MODEL_FD_PLUS = 4 Public Const SWKEY_MODEL_FD_NET = 5 'we need a structure for an array of bytes because otherwise the VB runtime can move the data in-between function calls Type FixedByteArray data(0 To MAX_USB_DEVICES * 9) As Byte ' 9 is the prodcode length (including terminating null) End Type ' and ints Type FixedIntegerArray data(1 To MAX_USB_DEVICES) As Long End Type ' this function converts an unsigned integer to a double for display purposes (otherwise it may display the dongle number as a negative number!) Public Function UIntToDouble(ByVal number As Long) As Double UIntToDouble = CDbl(number) If UIntToDouble < 0 Then UIntToDouble = UIntToDouble + 2 ^ 32 End If End Function ' this function gets the index-th prodcode from the array Public Function GetProdCodeFromArray(prodcode As FixedByteArray, ByVal index As Long) As String Dim data As Byte ' this will be a byte of data from array index = index - 1 ' so it is 0-based GetProdCodeFromArray = "" For i = 0 To 8 data = prodcode.data((index * 9) + i) If data = 0 Then ' stop when we get to the null Exit For Else ' otherwise append character to string GetProdCodeFromArray = GetProdCodeFromArray & Chr(data) End If Next End Function ' this function will convert the C string returned in the DCIS to a VB string ' e.g. to access the product code use TrimCString(mydcis.prodcode) Function TrimCString(Str As String) As String Dim i As Integer Dim length As Integer length = Len(Str) For i = 1 To length If Mid(Str, i, 1) = Chr$(0) Then TrimCString = Left$(Str, i - 1) 'take off null and rest of string Exit For End If Next End Function