⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winscard.pas

📁 Delphi 用的PSCS控件即例子程序,本人稍作修改了例子程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
   {$ENDIF}
{$ELSE}
   function SCardListInterfacesA(hContext: LongInt; szCard: LPStr; var pguidInterfaces: GUID;
                                 var pcguidInterfaces: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardListInterfacesA}
   function SCardListInterfacesW(hContext: LongInt; szCard: LPWStr; var pguidInterfaces: GUID;
                                 var pcguidInterfaces: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardListInterfacesW}

   function SCardGetProviderIdA(hContext: LongInt; szCard: LPStr; var pguidProviderId: GUID): LongInt; stdcall;
   {$EXTERNALSYM SCardGetProviderIdA}
   function SCardGetProviderIdW(hContext: LongInt; szCard: LPWStr; var pguidProviderId: GUID): LongInt; stdcall;
   {$EXTERNALSYM SCardGetProviderIdW}

{$ENDIF}

//
// NOTE:    The routine SCardGetProviderId in this implementation uses GUIDs.
//          The PC/SC definition uses BYTEs.
//

{$IFDEF WinSCard_DYNLINK}
type
   TSCardGetCardTypeProviderNameA = function (hContext: LongInt; szCardName: LPStr; dwProviderId: LongInt;
                                              szProvider: LPStr; var pcchProvider: LongInt): LongInt; stdcall;
   TSCardGetCardTypeProviderNameW = function (hContext: LongInt; szCardName: LPWStr; dwProviderId: LongInt;
                                              szProvider: LPWStr; var pcchProvider: LongInt): LongInt; stdcall;

   {$IFDEF UNICODE}
      TSCardGetCardTypeProviderName = TSCardGetCardTypeProviderNameW;
   {$ELSE}
      TSCardGetCardTypeProviderName = TSCardGetCardTypeProviderNameA;
   {$ENDIF}
{$ELSE}
   function SCardGetCardTypeProviderNameA(hContext: LongInt; szCardName: LPStr; dwProviderId: LongInt;
                                          szProvider: LPStr; var pcchProvider: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardGetCardTypeProviderNameA}
   function SCardGetCardTypeProviderNameW(hContext: LongInt; szCardName: LPWStr; dwProviderId: LongInt;
                                          szProvider: LPWStr; var pcchProvider: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardGetCardTypeProviderNameW}
{$ENDIF}


//
// NOTE:    This routine is an extension to the PC/SC definitions.
//


//
// Database Writer routines
//

{$IFDEF WinSCard_DYNLINK}
type
   TSCardIntroduceReaderGroupA = function (hContext: LongInt; szGroupName: LPStr): LongInt; stdcall;
   TSCardIntroduceReaderGroupW = function (hContext: LongInt; szGroupName: LPWStr): LongInt; stdcall;

   {$IFDEF UNICODE}
      TSCardIntroduceReaderGroup = TSCardIntroduceReaderGroupW;
   {$ELSE}
      TSCardIntroduceReaderGroup = TSCardIntroduceReaderGroupA;
   {$ENDIF}

   TSCardForgetReaderGroupA = function (hContext: LongInt; szGroupName: LPStr): LongInt; stdcall;
   TSCardForgetReaderGroupW = function (hContext: LongInt; szGroupName: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardForgetReaderGroup = TSCardForgetReaderGroupW;
   {$ELSE}
      TSCardForgetReaderGroup = TSCardForgetReaderGroupA;
   {$ENDIF}

   TSCardIntroduceReaderA = function (hContext: LongInt; szReadeName: LPStr; szDeviceName: LPStr): LongInt; stdcall;
   TSCardIntroduceReaderW = function (hContext: LongInt; szReadeName: LPWStr; szDeviceName: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardIntroduceReader = TSCardIntroduceReaderW;
   {$ELSE}
      TSCardIntroduceReader = TSCardIntroduceReaderA;
   {$ENDIF}

   TSCardForgetReaderA = function (hContext: LongInt; szReaderName: LPStr): LongInt; stdcall;
   TSCardForgetReaderW = function (hContext: LongInt; szReaderName: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardForgetReader = TSCardForgetReaderW;
   {$ELSE}
      TSCardForgetReader = TSCardForgetReaderA;
   {$ENDIF}

   TSCardAddReaderToGroupA = function (hContext: LongInt; szReaderName: LPStr; szGroupName: LPStr): LongInt; stdcall;
   TSCardAddReaderToGroupW = function (hContext: LongInt; szReaderName: LPWStr; szGroupName: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardAddReaderToGroup = TSCardAddReaderToGroupW;
   {$ELSE}
      TSCardAddReaderToGroup = TSCardAddReaderToGroupA;
   {$ENDIF}

   TSCardRemoveReaderFromGroupA = function (hContext: LongInt; szReaderName: LPStr; szGroupName: LPStr): LongInt; stdcall;
   TSCardRemoveReaderFromGroupW = function (hContext: LongInt; szReaderName: LPWStr; szGroupName: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardRemoveReaderFromGroup = TSCardRemoveReaderFromGroupW;
   {$ELSE}
      TSCardRemoveReaderFromGroup = TSCardRemoveReaderFromGroupA;
   {$ENDIF}

   TSCardIntroduceCardTypeA = function (hContext: LongInt; szCardName: LPStr; var pguidPrimaryProvider: GUID;
                                        var pguidInterfaces: GUID; dwInterfaceCount: LongInt; pbAtr: LPStr;
                                        pbAtrMask: LPStr; cbAtrLen: LongInt): LongInt; stdcall;
   TSCardIntroduceCardTypeW = function (hContext: LongInt; szCardName: LPWStr; var pguidPrimaryProvider: GUID;
                                        var pguidInterfaces: GUID; dwInterfaceCount: LongInt; pbAtr: LPWStr;
                                        pbAtrMask: LPWStr; cbAtrLen: LongInt): LongInt; stdcall;

   {$IFDEF UNICODE}
      TSCardIntroduceCardType = TSCardIntroduceCardTypeW;
   {$ELSE}
      TSCardIntroduceCardType = TSCardIntroduceCardTypeA;
   {$ENDIF}

   TSCardSetCardTypeProviderNameA = function (hContext: LongInt; szCardName: LPStr; dwProviderId: LongInt;
                                              szProvider: LPStr): LongInt; stdcall;
   TSCardSetCardTypeProviderNameW = function (hContext: LongInt; szCardName: LPWStr; dwProviderId: LongInt;
                                              szProvider: LPWStr): LongInt; stdcall;
   {$IFDEF UNICODE}
      TSCardSetCardTypeProviderName = TSCardSetCardTypeProviderNameW;
   {$ELSE}
      TSCardSetCardTypeProviderName = TSCardSetCardTypeProviderNameA;
   {$ENDIF}
{$ELSE}
   function SCardIntroduceReaderGroupA(hContext: LongInt; szGroupName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceReaderGroupA}
   function SCardIntroduceReaderGroupW(hContext: LongInt; szGroupName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceReaderGroupW}

   function SCardForgetReaderGroupA(hContext: LongInt; szGroupName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetReaderGroupA}
   function SCardForgetReaderGroupW(hContext: LongInt; szGroupName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetReaderGroupW}

   function SCardIntroduceReaderA(hContext: LongInt; szReadeName: LPStr; szDeviceName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceReaderA}
   function SCardIntroduceReaderW(hContext: LongInt; szReadeName: LPWStr; szDeviceName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceReaderW}

   function SCardForgetReaderA(hContext: LongInt; szReaderName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetReaderA}
   function SCardForgetReaderW(hContext: LongInt; szReaderName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetReaderW}

   function SCardAddReaderToGroupA(hContext: LongInt; szReaderName: LPStr; szGroupName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardAddReaderToGroupA}
   function SCardAddReaderToGroupW(hContext: LongInt; szReaderName: LPWStr; szGroupName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardAddReaderToGroupW}

   function SCardRemoveReaderFromGroupA(hContext: LongInt; szReaderName: LPStr; szGroupName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardRemoveReaderFromGroupA}
   function SCardRemoveReaderFromGroupW(hContext: LongInt; szReaderName: LPWStr; szGroupName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardRemoveReaderFromGroupW}

   function SCardIntroduceCardTypeA(hContext: LongInt; szCardName: LPStr; var pguidPrimaryProvider: GUID;
                                    var pguidInterfaces: GUID; dwInterfaceCount: LongInt; pbAtr: LPStr;
                                    pbAtrMask: LPStr; cbAtrLen: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceCardTypeA}
   function SCardIntroduceCardTypeW(hContext: LongInt; szCardName: LPWStr; var pguidPrimaryProvider: GUID;
                                    var pguidInterfaces: GUID; dwInterfaceCount: LongInt; pbAtr: LPWStr;
                                    pbAtrMask: LPWStr; cbAtrLen: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardIntroduceCardTypeW}

   function SCardSetCardTypeProviderNameA(hContext: LongInt; szCardName: LPStr; dwProviderId: LongInt;
                                          szProvider: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardSetCardTypeProviderNameA}
   function SCardSetCardTypeProviderNameW(hContext: LongInt; szCardName: LPWStr; dwProviderId: LongInt;
                                          szProvider: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardSetCardTypeProviderNameW}
{$ENDIF}

//
// NOTE:    This routine is an extention to the PC/SC specifications.
//

{$IFDEF WinSCard_DYNLINK}
type
   TSCardForgetCardTypeA = function (hContext: LongInt; szCardName: LPStr): LongInt; stdcall;
   TSCardForgetCardTypeW = function (hContext: LongInt; szCardName: LPWStr): LongInt; stdcall;

   {$IFDEF UNICODE}
      TSCardForgetCardType = TSCardForgetCardTypeW;
   {$ELSE}
      TSCardForgetCardType = TSCardForgetCardTypeA;
   {$ENDIF}
{$ELSE}
   function SCardForgetCardTypeA(hContext: LongInt; szCardName: LPStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetCardTypeA}
   function SCardForgetCardTypeW(hContext: LongInt; szCardName: LPWStr): LongInt; stdcall;
   {$EXTERNALSYM SCardForgetCardTypeW}
{$ENDIF}

//
////////////////////////////////////////////////////////////////////////////////
//
//  Service Manager Support Routines
//
//      The following services are supplied to simplify the use of the Service
//      Manager API.
//

{$IFDEF WinSCard_DYNLINK}
type
   TSCardFreeMemory = function (hContext: LongInt; pvMem: LongInt): LongInt; stdcall;

   TSCardAccessStartedEvent = function: LongInt; stdcall;

   TSCardReleaseStartedEvent = function: LongInt; stdcall;
{$ELSE}
   function SCardFreeMemory(hContext: LongInt; pvMem: LongInt): LongInt; stdcall;
   {$EXTERNALSYM SCardFreeMemory}

   function SCardAccessStartedEvent: LongInt; stdcall;
   {$EXTERNALSYM SCardAccessStartedEvent}

   function SCardReleaseStartedEvent: LongInt; stdcall;
   {$EXTERNALSYM SCardReleaseStartedEvent}
{$ENDIF}

//
////////////////////////////////////////////////////////////////////////////////
//
//  Reader Services
//
//      The following services supply means for tracking cards within readers.
//

type
   LPSCARD_READERSTATEA = ^SCARD_READERSTATEA;
   {$EXTERNALSYM LPSCARD_READERSTATEA}
   PSCARD_READERSTATEA = ^SCARD_READERSTATEA;
   {$EXTERNALSYM PSCARD_READERSTATEA}

   SCARD_READERSTATEA = record

// CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED
// CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED

      szReader:       LPCSTR;       { the reader name from SCardListReaders }

// CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED
// CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED CHANGED

      pvUserData:     Pointer;      { user defined data }
      dwCurrentState: LongInt;      { current state of reader at time of call }
      dwEventState:   LongInt;      { state of reader after state change }
      cbAtr:          LongInt;      { Number of bytes in the returned ATR }
      rgbAtr: array[0..35] of Byte; { Atr of inserted card, (extra alignment bytes) }
   end;
   {$EXTERNALSYM SCARD_READERSTATEA}

   LPSCARD_READERSTATEW = ^SCARD_READERSTATEW;
   {$EXTERNALSYM LPSCARD_READERSTATEW}
   PSCARD_READERSTATEW = ^SCARD_READERSTATEW;
   {$EXTERNALSYM PSCARD_READERSTATEW}
   SCARD_READERSTATEW = record
      szReader: LPCWStr;                { reader name }
      pvUserData: Pointer;              { user defined data }
      dwCurrentState: LongInt;          { current state of reader at time of call }
      dwEventState: LongInt;            { state of reader after state change }
      cbAtr: LongInt;                   { Number of bytes in the returned ATR }
      rgbAtr: array[0..35] of Byte;     { Atr of inserted card, (extra alignment bytes) }
   end;
   {$EXTERNALSYM SCARD_READERSTATEW}

{$IFDEF UNICODE}
   SCARD_READERSTATE = SCARD_READERSTATEW;
   PSCARD_READERSTATE = PSCARD_READERSTATEW;
   LPSCARD_READERSTATE = LPSCARD_READERSTATEW;
{$ELSE}
   SCARD_READERSTATE = SCARD_READERSTATEA;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -