rajbir singh thind Ответов: 2

Как добавить winscard.dll и используйте его для смарт-карты


Уважаемый Сэр/Мадам

я пытаюсь использовать winscard.dll для смарт-карт приложение, но я не могу добавить DLL как указание может у пожалуйста, скажите мне, как добавить winsacrd.dll

Karthik_Mahalingam

какую ошибку вы получаете ?

rajbir singh thind

ссылка c\windows\system32\winscard.dll не может быть добавлена, то пожалуйста, убедитесь, что файл доступен и что это является допустимой сборкой или COM-компонент

2 Ответов

Рейтинг:
0

Richard MacCutchan

Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите Add Reference ...


rajbir singh thind

у меня есть ошибка ссылка на c\windows\system32\winscard.dll не удалось добавить пожалуйста убедитесь что файл доступен и что это допустимая сборка или com компонент

Richard MacCutchan

Это не похоже на то, что это COM включен, так что вы не можете использовать его непосредственно из C#. Вам нужно будет проверить документацию для всех различных функций (например, SCardConnect функция) и используйте P/Invoke для доступа к ним.

Рейтинг:
0

RajKumarPandey

Use it as below -
// WinSCard APIs to be imported.
        [DllImport("WinScard.dll")]
        static extern int SCardEstablishContext(uint dwScope,
        IntPtr notUsed1,
        IntPtr notUsed2,
        out IntPtr phContext);

        [DllImport("WinScard.dll")]
        static extern int SCardReleaseContext(IntPtr phContext);

        [DllImport("WinScard.dll")]
        static extern int SCardConnect(IntPtr hContext,
        string cReaderName,
        uint dwShareMode,
        uint dwPrefProtocol,
        ref IntPtr phCard,
        ref IntPtr ActiveProtocol);

        [DllImport("WinScard.dll")]
        static extern int SCardDisconnect(IntPtr hCard, int Disposition);

        [DllImport("WinScard.dll")]
         static extern int SCardListReaderGroups(IntPtr hContext,
         ref string cGroups,
         ref int nStringSize);

        [DllImport("WinScard.dll", EntryPoint = "SCardListReadersA", CharSet = CharSet.Ansi)]
        static extern int SCardListReaders(
          IntPtr hContext,
          byte[] mszGroups,
          byte[] mszReaders,
          ref UInt32 pcchReaders
          );

         [DllImport("WinScard.dll")]
         static extern int SCardFreeMemory(IntPtr hContext,
         string cResourceToFree);