SCardResourceManager Listreader приводит к тому, что Index находился за пределами ошибки массива

1

Цель: мне нужно получить UID (уникальный идентификатор) смарт-карты HID, используя считыватель смарт-карт HID Omnikey. К сожалению, я не могу понять, как это сделать, используя PCSC (pcsc-sharp.dll). Таким образом, я искал альтернативу, и я нашел cardwerk.

Я новичок в.NET, и я тестирую код образца смарт-карты, который нашел оценочную версию dll smartcard.

ArrayList m_vsReaderNames = new ArrayList();

private void InitializeSmartCardSystem()
        {
            if (m_aCardResourceManager == null)
            {
                m_aCardResourceManager = new SCardResourceManager();
                if (!m_aCardResourceManager.EstablishContext(SCardContextScope.User))
                {
                    MessageBox.Show("SCardResourceManager.EstablishContext failed!");
                    Application.Exit();
                }

                m_aCardResourceManager.ListReaders(m_vsReaderNames);
                if (m_vsReaderNames.Count == 0)
                {
                    MessageBox.Show("SCardResourceManager.ListReaders did not find any card readers!");
                    Application.Exit();
                }
            }
        }

Это m_aCardResourceManager.ListReaders(m_vsReaderNames); часть получает следующую информацию о смарт-карте.

    [0] "H" object {string}
    [1] "I" object {string}
    [2] "D" object {string}
    [3] " " object {string}
    [4] "O" object {string}
    [5] "M" object {string}
    [6] "N" object {string}
    [7] "I" object {string}
    [8] "K" object {string}
    [9] "E" object {string}
    [10]"Y" object {string}
    [11]" " object {string}
    [12]"5" object {string}

Поскольку indexID отсутствует из переменной m_vsReaderNames в указанном выше коде, я столкнулся с ошибкой, указав, что индекс был за пределами массива.

Кроме того, вместо значений arraylist я хотел бы иметь строковое значение, равное "HID OMNIKEY 5", которое будет отображаться в комбинированном поле, показанном в прикрепленном файле.!

для полного кода примера см. http://smartcard-api.com/download.shtml.

Теги:

1 ответ

0

Я не совсем уверен, что вы спрашиваете. Похоже, вы хотите объединить эти значения в строку? Здесь вы можете это сделать.

var myString = string.Join("", m_vsReaderNames);
//myString now holds: "HID OMNIKEY 5"
  • 0
    Благодарю. Это одна из моих проблем, но у меня проблема с «Индексом не было границ массива». ошибка в этой части кода: m_aCardResourceManager.ListReaders (m_vsReaderNames); public int ListReaders (IList aReadersList); public int ListReaders (string [] vsGroups, IList aReadersList);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню