SCardTransmitでSCARD_E_INSUFFICIENT_BUFFERエラー(0x80100008)が
出るのでハマってしまいました。
WinError.hには以下のような説明になっています。
//
// MessageId: SCARD_E_INSUFFICIENT_BUFFER
//
// MessageText:
//
// The data buffer to receive returned data is too small for the returned data.
よくよく考えるとサイズを初期化せずに連続してコマンドを読んでしまってたので、
SCardTransmitを送る前にpbRecvBufferとpcbRecvLengthを初期化したら解決しました。
SCardTransmit(
IN SCARDHANDLE hCard,
IN LPCSCARD_IO_REQUEST pioSendPci,
IN LPCBYTE pbSendBuffer,
IN DWORD cbSendLength,
IN OUT LPSCARD_IO_REQUEST pioRecvPci,
OUT LPBYTE pbRecvBuffer,
IN OUT LPDWORD pcbRecvLength);
凡ミスです。
前のコマンドでpcbRecvLengthが小さい値になっていて、レスポンスを受け取るだけのバッファサイズが指定できていなかったのが原因でした。
![]() | トコトンやさしい非接触ICカードの本 (B&Tブックス―今日からモノ知りシリーズ) 1,512円 Amazon |