Classe SCWatcher e EIDPT.Init

Nov 18, 2010 at 11:46 AM

Tenho uma dúvida em relação à eidpt.dll,  é o seguinte, o meu objectivo é detectar a entrada do cartão do cidadão no smart card reader e depois ler os certificados, para isso recorri à classe SCWatcher que funciona bem detectando a  entrada do cartão, o problema é o seguinte: na função chamada pelo Handler, ele não  consegue correr a função do EIDPT_Init() e diz SC_ERROR_OBJECT_NOT_FOUND, o que  devo  fazer?

 

static class Program

    {

        static Form1 frm;

        static DevScope.CartaoDeCidadao.SCWatcher scw;

 

        static void cardInsertedMethod(string readerName,string cardName)

        {

            frm.outputTextBox("readerName:" + readerName + " cardName:" + cardName);

 

            DevScope.CartaoDeCidadao.EIDPT.Init(null); //"O2Micro CCID SC Reader 0"

            DevScope.CartaoDeCidadao.Certificate[] certs = DevScope.CartaoDeCidadao.EIDPT.GetCertificates();

 

            foreach (DevScope.CartaoDeCidadao.Certificate cert in certs)

            {

                frm.outputTextBox("cert.Name:" + cert.Name);

            }

 

        }

 

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Control.CheckForIllegalCrossThreadCalls = false;

 

            frm = new Form1();

            //Instantiates and starts the SCWatcher

            scw = DevScope.CartaoDeCidadao.SCWatcher.GetInstance();           

 

            //register listener para o evento de CardInserted

            scw.CardInserted += new DevScope.CartaoDeCidadao.SCWatcher.CardInsertedHandler(cardInsertedMethod);

 

            Application.Run(frm);

           

        }

 

Muito Obrigado,