windows-nt/Source/XPSP1/NT/drivers/smartcrd/scmstcs/drivernt.h
2020-09-26 16:20:57 +08:00

137 lines
2.7 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) SCM Microsystems, 1998 - 1999
//
// File: drivernt.h
//
//--------------------------------------------------------------------------
#if !defined( __DRIVER_NT_H__ )
#define __DRIVER_NT_H__
#include <NTDDK.H>
#include "STCLog.h"
#include "SMCLIB.h"
#include "WINSMCRD.h"
#include "SerialNT.h"
#define SMARTCARD_POOL_TAG '3BCS'
#if !defined( STATUS_DEVICE_REMOVED )
#define STATUS_DEVICE_REMOVED STATUS_UNSUCCESSFUL
#endif
void SystemTime( void );
void DataOut( PUCHAR p, ULONG l );
#define LOBYTE( any ) ((UCHAR)( any & 0xFF ) )
#define HIBYTE( any ) ((UCHAR)( ( any >> 8) & 0xFF ))
#define SysCompareMemory( p1, p2, Len ) ( RtlCompareMemory( p1,p2, Len ) != Len )
#define SysCopyMemory( pDest, pSrc, Len ) RtlCopyMemory( pDest, pSrc, Len )
#define SysFillMemory( pDest, Value, Len ) RtlFillMemory( pDest, Len, Value )
typedef struct _DEVICE_EXTENSION
{
SMARTCARD_EXTENSION SmartcardExtension;
#if defined( __NT4__ )
BOOLEAN OpenFlag;
UNICODE_STRING LinkID;
#else
KEVENT ReaderStarted; // Used to signal that the reader is able to process reqeusts
LONG ReaderOpen; // Used to signal the the reader has been closed
KSPIN_LOCK SpinLock;
UNICODE_STRING PnPDeviceName; // The pnp device name of our smart card reader
PVOID RemoveLock;
ULONG DeviceInstance;
LONG PowerState; // Used to keep track of the current power state the reader is in
LONG IoCount; // The current number of io-requests
#endif
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
#define IOCTL_SR_COMMAND SCARD_CTL_CODE( 0x800 )
#define IOCTL_GET_VERSIONS SCARD_CTL_CODE( 0x801 )
typedef struct _VERSION_CONTROL
{
ULONG SmclibVersion;
UCHAR DriverMajor,
DriverMinor,
FirmwareMajor,
FirmwareMinor;
} VERSION_CONTROL, *PVERSION_CONTROL;
#define MAX_READERS 4
NTSTATUS
DriverEntry(
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath
);
NTSTATUS
DrvGetConfiguration(
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath,
PULONG pComPort
);
NTSTATUS
DrvInitDeviceObject(
PDRIVER_OBJECT DriverObject,
ULONG ComPort
);
VOID
DrvUnloadDevice(
PDEVICE_OBJECT DeviceObject
);
VOID
DrvUnloadDriver(
PDRIVER_OBJECT DriverObject
);
NTSTATUS
DrvOpenClose(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
NTSTATUS
DrvDeviceIoControl(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
NTSTATUS
DrvGenericIOCTL(
PSMARTCARD_EXTENSION SmartcardExtension
);
void
DrvSetupSmartcardExtension(
PSMARTCARD_EXTENSION SmartcardExtension
);
NTSTATUS
DrvCancel(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
void
SysDelay(
ULONG Timeout
);
#endif // !__DRIVER_NT_H__