Systemwalker Centric Manager APIガイド - UNIX共通 - - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 -
目次 索引 前ページ次ページ

第2章 機能概要> 2.7 IDカードセキュリティのAPI【UNIX版】

2.7.4 IDカード/ICカード情報照会機能プログラム例

IDカード/ICカード情報照会機能を使用するプログラム例を以下に示します。

   
#include <stdio.h>
#include <f3crcapi.h>

#define WAIT_TIME           300        /* カード挿入待ち時間       */
#define COLUMN              5          /* カードデータ読込開始位置 */
#define READ_LENGTH         16         /* カードデータを読込長さ   */

  int Handle ;
  int iderror ;
  int status ;

/*=================================================================*/
/*  カード情報照会機能を使用する                                   */
/*=================================================================*/
int idcard_operate( char *result )
{
    int ret ;
    struct mpcard_read_inf read_inf ;   /* カード読込情報          */
    struct mpcard_read_data read_data ;

/*******************************************************************/
/*   IDカードセキュリティAPIの使用を開始する                       */
/*******************************************************************/

     Handle = Mp_OpenCard( &iderror, "", 0, 0 ) ;
     if ( Handle < 0 ) {
         idcard_error( Handle, iderror );
         return -1 ;
     }

/*******************************************************************/
/*  Mp_SendCard, Mp_GetCard関数での読み込み例                      */
/*******************************************************************/

    read_inf.column = COLUMN ;
    read_inf.length = READ_LENGTH ;
    read_inf.wait_time = WAIT_TIME ;

    ret = Mp_SendCard( Handle, &iderror, &status, MPCARD_READ_CARD, &read_inf, NULL ) ;
    if ( ret < 0 ){
        idcard_error( ret, iderror ) ;
        Mp_CloseCard( Handle, &iderror ) ; 
        return -1 ;
    }
    else if ( status == MPCARD_NO_CARD )
        fprintf( stderr,"Please insert your card to card-reader !!\n" );

    ret = Mp_GetCard( Handle, &iderror, &status, 0, &req, &read_data );
    if ( ret < 0 && iderror == MPCARD_TIMEOUT )   {
        fprintf( stderr, "TIME OUT !! You can't operate.\n" );
        Mp_CloseCard( Handle, &iderror ); 
        return 0 ;
    }
    else if ( ret < 0 ) {
        idcard_error( ret, iderror ) ; 
        Mp_CloseCard( Handle, &iderror ) ;
        return -1 ;
    }

/*******************************************************************/
/*  Mp_ReadCard関数での読み込み例                                  */
/*******************************************************************/

    read_inf.column = COLUMN ;
    read_inf.length = READ_LENGTH ;
    read_inf.wait_time = 0 ;

    ret = Mp_ReadCard( Handle, &iderror, MPCARD_READ_CARD, &read_inf, NULL, &read_data );
    if ( ret < 0 ){
        idcard_error( ret, iderror ) ;
        Mp_CloseCard( Handle, &iderror ) ;
        return -1 ;
    }

/*******************************************************************/
/*  IDカードセキュリティAPIの使用を終了する                        */
/*******************************************************************/

    Mp_CloseCard( Handle, &iderror ) ;
    memcpy( result, read_data.data, read_data.length );
    return 0 ;
  }

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 1995-2006