Форум: "WinAPI";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизКак узнать подключенные к компу Card Reader ы? Найти похожие ветки
← →
iNV (2006-07-13 18:30) [0]Нашел в MSDN функции, но не понятно как можно вернуть название ридеров. Есть код на C++ помогите его портировать в Delphi плз.
LPTSTR pmszReaders = NULL;
LPTSTR pReader;
LONG lReturn, lReturn2;
DWORD cch = SCARD_AUTOALLOCATE;
// Retrieve the list the readers.
// hSC was set by a previous call to SCardEstablishContext.
lReturn = SCardListReaders(hSC,
NULL,
(LPTSTR)&pmszReaders,
&cch );
switch( lReturn )
{
case SCARD_E_NO_READERS_AVAILABLE:
printf("Reader is not in groups.\n");
// Take appropriate action.
// ...
break;
case SCARD_S_SUCCESS:
// Do something with the multi string of readers.
// Here, we"ll merely output the values.
// A double-null terminates the list of values.
pReader = pmszReaders;
while ( "\0" != *pReader )
{
// Display the value.
printf("Reader: %S\n", pReader );
// Advance to the next value.
pReader = pReader + wcslen(pReader) + 1;
}
// Free the memory.
lReturn2 = SCardFreeMemory( hSC,
pmszReaders );
if ( SCARD_S_SUCCESS != lReturn2 )
printf("Failed SCardFreeMemory\n");
break;
default:
printf("Failed SCardListReaders\n");
// Take appropriate action.
// ...
break;
}
← →
StriderMan © (2006-07-13 19:57) [1]Это ж для смарт карт.
возился как-то с ними..
вот, может поможет...
type
//SCard API
SCARDCONTEXT = PULONG;
TSCardListReaders = function(AContext: SCARDCONTEXT;
AGroups: PChar;
AReaders: PChar;
ALength: LPDWORD): LongInt; stdcall;
← →
iNV © (2006-07-14 12:56) [2]Для того что бы начать работать с устройством, нужно определить какие ридеры подключенны, никто не знает, как это сделать в Delphi?
← →
StriderMan © (2006-07-14 13:10) [3]
> Для того что бы начать работать с устройством
сначала нужно вызвать процедуру SCardEstablishContext
TSCardEstablishContext = function(AScope: DWORD;
AReserved1: Pointer;
AReserved2: Pointer;
AContext: SCARDCONTEXT): LongInt; stdcall;
fDllSCardEstablishContext := GetProcAddress(fWinScardDllH, "SCardEstablishContext");
← →
StriderMan © (2006-07-14 13:19) [4]
> никто не знает, как это сделать в Delphi?
в чем проблема-то? как использовать функции API? или вопрос непосредственно по SCard?
← →
bobson (2006-09-07 16:26) [5]Я писал такой интерфейсный модуль для winscard.dll:
type
PCharArray = ^TCharArray;
TCharArray = array[0..1024] of Char;
TScardIOResult = record
Protocol: Integer;
PciLength: Integer
end;
//Функции, импортируемые из WinSCard.dll
//Получает контекст ридеров
function SCardEstablishContext(dwScope: LongInt;
nNotUsed1, nNotUsed2: Pointer;
var phContext: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 15;
//Освобождает контекст ридеров
function SCardReleaseContext(phContext: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 50;
//Получает контекст карты ANSI
function SCardConnectA(hContext: Integer; cReaderName: PChar;
dwShareMode, dwPrefProtocol: LongInt;
var phCard, ActiveProtocol: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 10;
//Получает контекст карты UNICODE
function SCardConnectW(hContext: Integer; cReaderName: PChar;
dwShareMode, dwPrefProtocol: LongInt;
var phCard, ActiveProtocol: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 11;
//Освобождает контекст карты
function SCardDisconnect(hCard, Disposition: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 13;
//Получает список групп ридеров ANSI
function SCardListReaderGroupsA(hContext: Integer;
var cGroups: PCharArray; var nStringSize: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 41;
//Получает список групп ридеров UNICODE
function SCardListReaderGroupsW(hContext: Integer;
var cGroups: PCharArray; var nStringSize: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 42;
//Получает список ридеров ANSI
function SCardListReadersA(hContext: Integer; cGroups: PCharArray;
var cReaderLists: PCharArray;
var nReaderCount: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 43;
//Получает список ридеров UNICODE
function SCardListReadersW(hContext: Integer; cGroups: PCharArray;
var cReaderLists: PCharArray;
var nReaderCount: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 44;
//Освобождает память, выделенную под контекст ридеров
function SCardFreeMemory(hContext: Integer;
var cResourceToFree: PCharArray): Integer;
stdcall; far; external "WINSCARD.DLL" index 22;
//Получает атрибуты карты
function SCardGetAttrib(nCard: Integer; dwAttrId: LongInt;
var bytRecvAttr: PMFULBufer;
var nRecLen: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 23;
//Поддерживает обмен информацией с картой
function SCardTransmit(hCard: Integer; var pioSendPci: TScardIOResult;
pbSendBuffer: array of byte;
cbSendLength: Integer;
var pioRecvPci: TScardIOResult;
var pbRecvBuffer: byte;
var pcbRecvLength: Integer): Integer;
stdcall; far; external "WINSCARD.DLL" index 60;
Удачи...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.038 c