unsafe class Program
{
public struct Bim_DataError
{
public Bim_DataErrorType bim_data_error_type;
public char* bim_data_error_explain;
}
public enum Bim_DataErrorType
{
BimDataError_NOTHING = 0,
BimDataError_AXIS_QUALITY = (-1),
BimDataError_AXIS_RANGE = (-2),
BimDataError_NUM_OF_MINUTIA = (-3),
BimDataError_ZONE_LENGTH = (-4),
BimDataError_MINUTIA_QUALITY= (-5),
BimDataError_MINUTIA_RANGE = (-6),
BimDataError_MINUTIA_RIDGE = (-7),
BimDataError_MINUTIA_NUMBER = (-8),
BimDataError_STOPPER = (-9),
BimDataError_OTHER = (-10),
BimDataError_ZONE_ADJUST = (-11)
}
public enum Bim_Check
{
eBimCheckNo,
eBimCheckYes,
eBimCheckMax
}
public enum Bim_Clear
{
eBimClearBCD_AxisNo,
eBimClearBCD_AxisYes,
eBimClearBCD_AxisMax
}
public enum Bim_Limit
{
eBimLimitNo,
eBimLimitYes,
eBimLimitMax
}
public enum AcmDbType : long
{
ACM_DB_TYPE_RDB_T = 0x01,
ACM_DB_TYPE_RDB_L = 0x02,
ACM_DB_TYPE_LDB = 0x04,
ACM_DB_TYPE_EXTRA = 0x08,
ACM_DB_TYPE_SDBL = 0x10,
ACM_DB_TYPE_MAX = 5,
}
public struct Bim_Mode
{
public AcmDbType acm_db_tpye;
public Bim_Limit bim_limit;
public int num_limit;
public char* key_list;
public int key_list_len;
public Bim_Clear bim_clear;
public Bim_Check bim_check;
}
public enum Bim_ZoneFormat
{
eBimZoneFormat_32x32_1bit = 1,
eBimZoneFormat_32x32_2bit = 2,
eBimZoneFormat_32x32_8bit = 3,
eBimZoneFormat_40x32_1bit = 4,
eBimZoneFormat_40x32_2bit = 5,
eBimZoneFormat_40x32_8bit = 6,
eBimZoneFormat_Max = 7
}
[DllImport("Bimcot.dll", EntryPoint = "Bim_FIStoFMP5", SetLastError = true,
CharSet = CharSet.Unicode, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern bool Bim_FIStoFMP5(
Bim_Mode bim_mode,
void* i_a_axis,
void* i_qu,
void* i_mno,
char* i_zdata,
Bim_ZoneFormat i_format,
char[] i_mpart,
char[][] o_fmp5,
int[] o_fmp5_len,
Bim_DataError bim_data_error
);
static void Main(string[] args)
{
unsafe
{
char texto = '\0';
Bim_Mode bim_mode2;
bim_mode2.acm_db_tpye = AcmDbType.ACM_DB_TYPE_RDB_L;
bim_mode2.bim_limit = Bim_Limit.eBimLimitYes;
bim_mode2.num_limit = 63;
bim_mode2.key_list = &texto;
bim_mode2.key_list_len = 0;
bim_mode2.bim_clear = Bim_Clear.eBimClearBCD_AxisYes;
bim_mode2.bim_check = Bim_Check.eBimCheckNo;
try
{
void* i_a_axis2, i_qu2, i_mno2;
char[] i_impart2;
Bim_ZoneFormat i_format = new Bim_ZoneFormat();
i_format = Bim_ZoneFormat.eBimZoneFormat_32x32_2bit;
char[][] o_fmp52;
int[] o_fmp5_len2;
i_impart2 = new char[1600];
o_fmp5_len2 = new int[10];
o_fmp52 = new char[1600][];
Bim_DataError bim_data_error2 = new Bim_DataError();
char* i_zdata2 = null;
/*fixed (char* i_zdata2 = &imagen[0])*/
{
Bim_FIStoFMP5(bim_mode2, &i_a_axis2, &i_qu2, &i_mno2, i_zdata2, i_format, i_impart2, o_fmp52, o_fmp5_len2, bim_data_error2);
}
}
catch (Exception e)
{
Console.WriteLine("Error = " + e, "Error de parametro");
}
}
}
}