Академический Документы
Профессиональный Документы
Культура Документы
Option Explicit On
Imports System.Runtime.InteropServices
Module mdlPublic
Public Declare Ansi Sub FK_DisConnect Lib "FKAttend" (ByVal nHandleIndex As Int32)
Public Declare Ansi Sub FK_PowerOnAllDevice Lib "FKAttend" (ByVal nHandleIndex As Int32)
Public Declare Ansi Function FK_PowerOffDevice Lib "FKAttend" (ByVal nHandleIndex As Int32)
As Int32
Public Declare Ansi Function FK_SaveEnrollData Lib "FKAttend" (ByVal nHandleIndex As Int32)
As Int32
' -- etc
Public Declare Ansi Function FK_ConnectGetIP Lib "FKAttend" (ByRef apnComName As String) As
Long
Public Declare Ansi Function FK_GetAdjustInfo Lib "FKAttend" (ByVal nHandleIndex As Int32,
ByRef dwAdjustedState As Int32, ByRef dwAdjustedMonth As Int32, ByRef dwAdjustedDay As Int32,
ByRef dwAdjustedHour As Int32, ByRef dwAdjustedMinute As Int32, ByRef dwRestoredState As Int32,
ByRef dwRestoredMonth As Int32, ByRef dwRestoredDay As Int32, ByRef dwRestoredHour As Int32,
ByRef dwRestoredMinte As Int32) As Int32
Public Declare Ansi Function FK_SetAdjustInfo Lib "FKAttend" (ByVal nHandleIndex As Int32,
ByVal dwAdjustedState As Int32, ByVal dwAdjustedMonth As Int32, ByVal dwAdjustedDay As Int32,
ByVal dwAdjustedHour As Int32, ByVal dwAdjustedMinute As Int32, ByVal dwRestoredState As Int32,
ByVal dwRestoredMonth As Int32, ByVal dwRestoredDay As Int32, ByVal dwRestoredHour As Int32,
ByVal dwRestoredMinte As Int32) As Int32
Structure REALTIMEINFO
Dim Valid As Byte
Dim AckTime As Byte
Dim WaitTime As Byte
Dim Reserve As Byte
Dim SendPos As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_REAL_TIME)> Dim Hour_Renamed() As
Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_REAL_TIME)> Dim Minute_Renamed() As
Byte
End Structure ' 16 Byte
'/******************************************************************/
'/* Constant */
'/******************************************************************/
'//=============== Protocol Type ===============//
Public Const PROTOCOL_TCPIP As Integer = 0 ' TCP/IP
Public Const PROTOCOL_UDP As Integer = 1 ' UDP
vptr = Marshal.AllocHGlobal(vnSize)
Marshal.Copy(aByteArray, 0, vptr, vnSize)
vObject = Marshal.PtrToStructure(vptr, aType)
Marshal.FreeHGlobal(vptr)
ConvertByteArrayToStructure = vObject
Exit Function
errl_ConvertByteArrayToStructure:
ConvertByteArrayToStructure = Nothing
End Function
errl_ConvertStructureToByteArray:
End Sub
vnSize = astrBuff.Length / 3 + 1
ReDim vnVal(vnSize)
For vnii = 1 To astrBuff.Length Step 3
vnVal((vnii - 1) / 3) = Val("&H" & Mid(astrBuff, vnii, 2))
Next
vpPtr = Marshal.AllocCoTaskMem(vnSize)
Marshal.Copy(vnVal, 0, vpPtr, vnSize)
Select Case anTypeNumber
Case 1
ConvertStringToMarshalStructure = CType(Marshal.PtrToStructure(vpPtr,
GetType(BELLINFO)), BELLINFO)
Case 2
ConvertStringToMarshalStructure = CType(Marshal.PtrToStructure(vpPtr,
GetType(GROUPMATCHINFO)), GROUPMATCHINFO)
Case 3
ConvertStringToMarshalStructure = CType(Marshal.PtrToStructure(vpPtr,
GetType(GROUPPASSINFO)), GROUPPASSINFO)
Case 4
ConvertStringToMarshalStructure = CType(Marshal.PtrToStructure(vpPtr,
GetType(USERPASSINFO)), USERPASSINFO)
Case 5
ConvertStringToMarshalStructure = CType(Marshal.PtrToStructure(vpPtr,
GetType(PASSTIME)), PASSTIME)
Case Else
ConvertStringToMarshalStructure = Nothing
End Select
Marshal.FreeCoTaskMem(vpPtr)
End Function
vnSize = Marshal.SizeOf(aptrVal)
vpPtr = Marshal.AllocCoTaskMem(vnSize)
Marshal.StructureToPtr(aptrVal, vpPtr, False)
ReDim vnVal(vnSize)
Marshal.Copy(vpPtr, vnVal, 0, vnSize)
Marshal.FreeCoTaskMem(vpPtr)
vstrData = ""
For vnii = 0 To vnSize - 1
vstrTmp = Format(vnVal(vnii), "X")
If vstrTmp.Length = 1 Then vstrTmp = "0" & vstrTmp
vstrData = vstrData & vstrTmp & " "
Next
ConvertMarshalStructureToString = Trim(vstrData)
End Function
End Module