You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
804 lines
21 KiB
804 lines
21 KiB
/*****************************************************************************
|
|
* $ProjectName: $
|
|
* $ProjectRevision: $
|
|
*-----------------------------------------------------------------------------
|
|
* $Source: z:/pr/cmbs0/sw/sccmn50m.ms/rcs/sccmn50m.h $
|
|
* $Revision: 1.3 $
|
|
*-----------------------------------------------------------------------------
|
|
* $Author: TBruendl $
|
|
*-----------------------------------------------------------------------------
|
|
* History: see EOF
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* Copyright © 2000 OMNIKEY AG
|
|
******************************************************************************/
|
|
|
|
#ifndef _CARDMAN_
|
|
#define _CARDMAN_
|
|
|
|
|
|
// ****************************************************************************
|
|
// DEFINES
|
|
// ****************************************************************************
|
|
#define DRIVER_NAME "SCCMN50M"
|
|
#define SMARTCARD_POOL_TAG 'CMCS'
|
|
|
|
#include <ntddk.h>
|
|
#include <ntddser.h>
|
|
|
|
#include "smclib.h"
|
|
#include "sccmlog.h"
|
|
|
|
#include "pcsc_cm.h"
|
|
|
|
#define SMARTCARD_READ SCARD_CTL_CODE(1000)
|
|
#define SMARTCARD_WRITE SCARD_CTL_CODE(1001)
|
|
|
|
#define CARDMAN_DEVICE_NAME L"\\Device\\CM_2010_0"
|
|
|
|
|
|
#define IFD_NT_VERSIONMAJOR_CARDMAN 3
|
|
#define IFD_NT_VERSIONMINOR_CARDMAN 2
|
|
#define IFD_NT_BUILDNUMBER_CARDMAN 1
|
|
|
|
|
|
#define ATTR_VENDOR_NAME "OMNIKEY"
|
|
#define ATTR_IFD_TYPE_CM "CardMan 2010"
|
|
|
|
#define ATTR_MAX_IFSD_CARDMAN_II 80
|
|
|
|
|
|
#define WAIT_MS -10000
|
|
#define ms_ 1
|
|
|
|
#define UNKNOWN 0xFFFFFFFF
|
|
#define REMOVED 0x00000001
|
|
#define INSERTED 0x00000002
|
|
#define POWERED 0x00000004
|
|
|
|
|
|
// SCR control byte
|
|
#define IGNORE_PARITY 0x01
|
|
#define XMIT_HANDSHAKE_OFF 0x02
|
|
#define CM2_GET_ATR 0x04
|
|
//#define reserved 0x08
|
|
#define TO_STATE_XH 0x10
|
|
#define LEDS_OFF 0x20
|
|
#define LEDS_RED 0x40
|
|
#define CARD_POWER 0x80
|
|
|
|
|
|
// card control byte
|
|
#define INVERSE_DATA 0x01
|
|
#define ENABLE_5MHZ_FAST 0x02
|
|
#define ENABLE_3MHZ_FAST 0x04
|
|
#define ENABLE_5MHZ 0x08
|
|
#define ENABLE_3MHZ 0x00
|
|
#define ENABLE_SYN 0x10
|
|
#define ENABLE_T0 0x20
|
|
#define ENABLE_T1 0x40
|
|
#define ENABLE_CRC 0x80
|
|
|
|
#define ALL_FLAGS 0xFF
|
|
|
|
// tx control byte
|
|
#define SYNC_RESET_LINE_HIGH 0x80
|
|
#define SYNC_RESET_LINE_LOW 0x00
|
|
#define CLOCK_FORCED_2WBP 0x40
|
|
#define TRANSMIT_A8 0x08
|
|
#define SYNC_DUMMY_RECEIVE 0x10
|
|
|
|
// rx control byte
|
|
|
|
#define T0_DATA_TO_CARD 0x80
|
|
#define T0_DATA_FROM_CARD 0x00
|
|
#define COLD_RESET 0x40
|
|
#define RECEIVE_A8 0x08
|
|
|
|
#define DEFAULT_READ_INTERVAL_TIMEOUT 1000
|
|
#define DEFAULT_READ_TOTAL_TIMEOUT_MULTIPLIER 50
|
|
#define DEFAULT_READ_TOTAL_TIMEOUT_CONSTANT 1500
|
|
#define DEFAULT_WRITE_TOTAL_TIMEOUT_MULTIPLIER 50
|
|
#define DEFAULT_WRITE_TOTAL_TIMEOUT_CONSTANT 250
|
|
|
|
|
|
// for protocol T=0
|
|
#define T0_HEADER_LEN 0x05
|
|
#define T0_STATE_LEN 0x02
|
|
|
|
// for protocol T=1
|
|
#define T1_HEADER_LEN 0x03
|
|
#define MAX_EDC_LEN 0x02
|
|
|
|
|
|
|
|
// for power on
|
|
#define RESET_DELAY_SYNC 0x01
|
|
|
|
#define ASYNC3_CARD 0x00
|
|
#define ASYNC5_CARD 0x01
|
|
|
|
|
|
#define ATR_LEN_SYNC 4
|
|
#define ATR_LEN_ASYNC 33
|
|
|
|
|
|
|
|
#define CHAR_INV 0x03
|
|
#define CHAR_NORM 0x3B
|
|
|
|
|
|
#define MIN_ATR_LEN 0x03
|
|
|
|
#define SYNC_ATR_RX_CONTROL 0x47
|
|
#define SYNC_RESET_DELAY 0x01
|
|
|
|
|
|
#define TS_OFFSET 0
|
|
#define T0_OFFSET 1
|
|
|
|
|
|
|
|
|
|
typedef enum _READER_POWER_STATE
|
|
{
|
|
PowerReaderUnspecified = 0,
|
|
PowerReaderWorking,
|
|
PowerReaderOff
|
|
} READER_POWER_STATE, *PREADER_POWER_STATE;
|
|
|
|
typedef struct _SERIAL_READER_CONFIG
|
|
{
|
|
// flow control
|
|
SERIAL_HANDFLOW HandFlow;
|
|
|
|
// special characters
|
|
SERIAL_CHARS SerialChars;
|
|
|
|
// read/write timeouts
|
|
SERIAL_TIMEOUTS Timeouts;
|
|
|
|
// Baudrate for reader
|
|
SERIAL_BAUD_RATE BaudRate;
|
|
|
|
// Stop bits, parity configuration
|
|
SERIAL_LINE_CONTROL LineControl;
|
|
|
|
//
|
|
// current status of the serial port for IOCTL_GET_COMMSTATUS
|
|
//
|
|
SERIAL_STATUS SerialStatus;
|
|
|
|
// mask for purge operation
|
|
ULONG PurgeMask;
|
|
|
|
} SERIAL_READER_CONFIG, *PSERIAL_READER_CONFIG;
|
|
|
|
typedef struct _CARDMAN_CONFIG
|
|
{
|
|
UCHAR SCRControl;
|
|
UCHAR CardControl;
|
|
UCHAR CardStopBits;
|
|
UCHAR ResetDelay;
|
|
} CARDMAN_CONFIG, *PCARDMAN_CONFIG;
|
|
|
|
typedef struct _CARDMAN_HEADER
|
|
{
|
|
UCHAR TxControl;
|
|
UCHAR TxLength;
|
|
UCHAR RxControl;
|
|
UCHAR RxLength;
|
|
} CARDMAN_HEADER, *PCARDMAN_HEADER;
|
|
|
|
|
|
|
|
typedef struct _DEVICE_EXTENSION
|
|
{
|
|
// Our smart card extension
|
|
SMARTCARD_EXTENSION SmartcardExtension;
|
|
|
|
// The current number of io-requests
|
|
LONG IoCount;
|
|
|
|
// Used to signal that the reader is able to process reqeusts
|
|
KEVENT ReaderStarted;
|
|
|
|
// Used to signal the the reader has been closed
|
|
KEVENT ReaderClosed;
|
|
|
|
// Used to signal that the connection to the serial driver has been closed
|
|
KEVENT SerialCloseDone;
|
|
|
|
ULONG DeviceInstance;
|
|
|
|
// The pnp device name of our smart card reader
|
|
UNICODE_STRING PnPDeviceName;
|
|
|
|
|
|
KSPIN_LOCK SpinLock;
|
|
|
|
|
|
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
|
|
|
|
//
|
|
// Define the reader specific portion of the smart card extension
|
|
//
|
|
typedef struct _READER_EXTENSION
|
|
{
|
|
|
|
HANDLE hThread;
|
|
|
|
// DeviceObject pointer to serial port
|
|
PDEVICE_OBJECT AttachedDeviceObject;
|
|
|
|
// IoRequest to be send to serial driver
|
|
ULONG SerialIoControlCode;
|
|
|
|
|
|
// Saved card state for hibernation/sleeping modes.
|
|
BOOLEAN CardPresent;
|
|
|
|
// Current reader power state.
|
|
READER_POWER_STATE ReaderPowerState;
|
|
|
|
|
|
|
|
BOOLEAN TimeToTerminateThread;
|
|
PVOID ThreadObjectPointer;
|
|
KMUTEX CardManIOMutex;
|
|
SERIAL_READER_CONFIG SerialConfigData;
|
|
BOOLEAN NoConfig;
|
|
BOOLEAN ToRHConfig;
|
|
BOOLEAN BreakSet;
|
|
ULONG SerialErrors;
|
|
CARDMAN_CONFIG CardManConfig;
|
|
CARDMAN_HEADER CardManHeader;
|
|
ULONG ulOldCardState;
|
|
ULONG ulNewCardState;
|
|
BOOLEAN fRawModeNecessary;
|
|
ULONG ulFWVersion;
|
|
BOOLEAN fSPESupported;
|
|
BOOLEAN fTransparentMode;
|
|
BOOLEAN fInverseAtr;
|
|
UCHAR abDeviceDescription[42];
|
|
SYNC_PARAMETERS SyncParameters;
|
|
} READER_EXTENSION, *PREADER_EXTENSION;
|
|
|
|
#define READER_EXTENSION(member) (SmartcardExtension->ReaderExtension->member)
|
|
#define ATTACHED_DEVICE_OBJECT deviceExtension->SmartcardExtension.ReaderExtension->AttachedDeviceObject
|
|
|
|
|
|
|
|
|
|
// ****************************************************************************
|
|
// PROTOTYPES
|
|
// ****************************************************************************
|
|
NTSTATUS
|
|
SCCMN50M_AddDevice (
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT PhysicalDeviceObject
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_CallSerialDriver (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Cancel (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Cleanup (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_ClearCardControlFlags (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN UCHAR Flags
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_ClearCardManHeader (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_ClearSCRControlFlags (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN UCHAR Flags
|
|
);
|
|
VOID
|
|
SCCMN50M_CompleteCardTracking (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_CreateClose (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_CreateDevice (
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
|
OUT PDEVICE_OBJECT *DeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_DeviceControl (
|
|
PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_DriverUnload (
|
|
IN PDRIVER_OBJECT DriverObject
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_InitializeSmartcardExtension (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulDeviceInstance
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_PnP (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Power (
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_RemoveDevice (
|
|
PDEVICE_OBJECT DeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SerialIo (
|
|
PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
|
|
VOID
|
|
SCCMN50M_SetCardManHeader (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN UCHAR TxControl,
|
|
IN UCHAR TxLength,
|
|
IN UCHAR RxControl,
|
|
IN UCHAR RxLength
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_SetCardControlFlags (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN UCHAR Flags
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_SetSCRControlFlags (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN UCHAR Flags
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_StopCardTracking (
|
|
IN PDEVICE_EXTENSION pDeviceExtension
|
|
);
|
|
|
|
VOID SCCMN50M_SetVendorAndIfdName(
|
|
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
NTSTATUS
|
|
SCCMN50M_SystemControl(
|
|
PDEVICE_OBJECT DeviceObject,
|
|
PIRP Irp
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_UpdateCurrentStateThread (
|
|
IN PVOID Context
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_UpdateCurrentState(
|
|
IN PSMARTCARD_EXTENSION smartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_VendorIoctl (
|
|
PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_CloseSerialDriver(
|
|
IN PDEVICE_OBJECT DeviceObject
|
|
);
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
VOID
|
|
MemSet(PUCHAR pbBuffer,
|
|
ULONG ulBufferSize,
|
|
UCHAR ucPattern,
|
|
ULONG ulCount);
|
|
|
|
VOID
|
|
MemCpy(PUCHAR pbDestination,
|
|
ULONG ulDestinationLen,
|
|
PUCHAR pbSource,
|
|
ULONG ulCount);
|
|
|
|
NTSTATUS Wait (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulMilliseconds
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ReadCardMan (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBytesToRead,
|
|
OUT PULONG pulBytesRead,
|
|
IN PUCHAR pbReadBuffer,
|
|
IN ULONG ulReadBufferSize
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_WriteCardMan (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension,
|
|
ULONG BytesToWrite,
|
|
PUCHAR pWriteBuffer
|
|
);
|
|
NTSTATUS
|
|
SCCMN50M_SerialIo(
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetWrite (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBytesToWrite,
|
|
IN PUCHAR pbWriteBuffer
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetRead(
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBytesToRead
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_PurgeComm (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_GetCommStatus(
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ResyncCardManII (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
SCCMN50M_IOOperationFailed(
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_StartCardTracking (
|
|
PDEVICE_EXTENSION pDeviceExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_InitCommPort (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_GetDeviceDescription (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_InitializeCardMan (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetRTS (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetDTR (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_TransmitT0 (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_TransmitT1 (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Transmit (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_EnterTransparentMode (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ExitTransparentMode (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_InverseBuffer (
|
|
PUCHAR pbBuffer,
|
|
ULONG ulBufferSize
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ResyncCardManI (
|
|
IN PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetBRK (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ClearBRK (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ClearRTS (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_PowerOff (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_PowerOn (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
OUT PULONG pulAtrLength,
|
|
OUT PUCHAR pbAtrBuffer,
|
|
IN ULONG ulAtrBufferSize
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_CardPower (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_UseParsingStrategy (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
OUT PULONG pulAtrLength,
|
|
OUT PUCHAR pbAtrBuffer,
|
|
IN ULONG ulAtrBufferSize
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_UseColdWarmResetStrategy (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
OUT PULONG pulAtrLength,
|
|
OUT PUCHAR pbAtrBuffer,
|
|
IN ULONG ulAtrBufferSize,
|
|
IN BOOLEAN fWarmReset
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
SCCMN50M_IsAtrValid (
|
|
PUCHAR pbAtrBuffer,
|
|
ULONG ulAtrLength
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetProtocol (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_CardTracking (
|
|
PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_IoCtlVendor (
|
|
PSMARTCARD_EXTENSION SmartcardExtension
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetHighSpeed_CR80S_SAMOS (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_GetFWVersion (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ReadDeviceDescription (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
BOOLEAN
|
|
SCCMN50M_IsAsynchronousSmartCard (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetFl_1Dl_3(IN PSMARTCARD_EXTENSION pSmartcardExtension );
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetFl_1Dl_1(IN PSMARTCARD_EXTENSION pSmartcardExtension );
|
|
|
|
|
|
// synchronous smart cards
|
|
NTSTATUS
|
|
SCCMN50M_SyncCardPowerOn (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_SetSyncParameters (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
UCHAR
|
|
SCCMN50M_CalcTxControlByte (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBitsToWrite
|
|
);
|
|
|
|
UCHAR
|
|
SCCMN50M_CalcTxLengthByte (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBitsToWrite
|
|
);
|
|
|
|
UCHAR
|
|
SCCMN50M_CalcRxControlByte (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBitsToRead
|
|
);
|
|
|
|
UCHAR
|
|
SCCMN50M_CalcRxLengthByte (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
IN ULONG ulBitsToRead
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_ResetCard2WBP (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Transmit2WBP (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
NTSTATUS
|
|
SCCMN50M_Transmit3WBP (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
SCCMN50M_UseSyncStrategy (
|
|
IN PSMARTCARD_EXTENSION pSmartcardExtension,
|
|
OUT PULONG pulAtrLength,
|
|
OUT PUCHAR pbAtrBuffer,
|
|
IN ULONG ulAtrBufferSize
|
|
);
|
|
|
|
VOID
|
|
SCCMN50M_Shift_Msg (
|
|
PUCHAR pbBuffer,
|
|
ULONG ulMsgLen
|
|
);
|
|
|
|
|
|
|
|
VOID SCCMN50M_CheckAtrModified (
|
|
IN OUT PUCHAR pbBuffer,
|
|
IN ULONG ulBufferSize
|
|
);
|
|
|
|
|
|
#endif
|
|
|
|
/*****************************************************************************
|
|
* History:
|
|
* $Log: sccmn50m.h $
|
|
* Revision 1.3 2000/07/28 09:24:13 TBruendl
|
|
* Changes for OMNIKEY on Whistler CD
|
|
*
|
|
* Revision 1.8 2000/06/28 08:47:33 TBruendl
|
|
* R03_0_1_1
|
|
*
|
|
* Revision 1.7 2000/06/27 11:56:29 TBruendl
|
|
* workaraound for SAMOR smart cards with invalid ATR (ITSEC)
|
|
*
|
|
* Revision 1.6 2000/05/23 09:58:27 TBruendl
|
|
* OMNIKEY 3.0.0.1
|
|
*
|
|
* Revision 1.5 2000/03/01 09:32:06 TBruendl
|
|
* R02.20.0
|
|
*
|
|
* Revision 1.4 1999/12/13 07:57:30 TBruendl
|
|
* build number increased
|
|
*
|
|
* Revision 1.3 1999/07/12 12:50:10 TBruendl
|
|
* new version information
|
|
*
|
|
* Revision 1.2 1999/06/10 09:03:58 TBruendl
|
|
* No comment given
|
|
*
|
|
* Revision 1.1 1999/02/02 13:34:39 TBruendl
|
|
* This is the first release (R01.00) of the IFD handler for CardMan running under NT5.0.
|
|
*
|
|
*
|
|
*****************************************************************************/
|
|
|