From: dempa2000 on
I am having difficulties using SCardControl when connected to a USB CCID
Smart Card Reader.

I have succesfully connected to the reader in direct mode.
The EscapeCommandEnable registry flag is set to a non-zero value.
I am using the following command:

#define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500)
unsigned char sendBuf[] = {0x01, 0x02, 0x03};
unsigned char recBuf[1000];
DWORD ret;

res = SCardControl(cardHandle,
IOCTL_CCID_ESCAPE ,
sendBuf,
sizeof(sendBuf),
recBuf,
sizeof(recBuf),
&ret);

This code will return 0x0000007A, The data area passed to a system call is
too small.

I know that the reader only will return 2-3 bytes.

I have tried setting ret to 0 and to 0xff in case the param is both in/out.
I have tried changing all of the other buffer sizes to different values but
with the same result.

any ideas ?
From: Janet Schneider [MSFT] on
Have you tried the CCID driver in Vista RC1? It has all of the latest fixes.

And have you tried Windows 2003 Server?

--
This posting is provided "AS IS" with no warranties, and confers no rights.


"dempa2000" wrote:

> I am having difficulties using SCardControl when connected to a USB CCID
> Smart Card Reader.
>
> I have succesfully connected to the reader in direct mode.
> The EscapeCommandEnable registry flag is set to a non-zero value.
> I am using the following command:
>
> #define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500)
> unsigned char sendBuf[] = {0x01, 0x02, 0x03};
> unsigned char recBuf[1000];
> DWORD ret;
>
> res = SCardControl(cardHandle,
> IOCTL_CCID_ESCAPE ,
> sendBuf,
> sizeof(sendBuf),
> recBuf,
> sizeof(recBuf),
> &ret);
>
> This code will return 0x0000007A, The data area passed to a system call is
> too small.
>
> I know that the reader only will return 2-3 bytes.
>
> I have tried setting ret to 0 and to 0xff in case the param is both in/out.
> I have tried changing all of the other buffer sizes to different values but
> with the same result.
>
> any ideas ?