SCardTransmit 함수(winscard.h)
SCardTransmit 함수는 스마트 카드 서비스 요청을 보내고 카드 데이터를 다시 받을 것으로 예상합니다.
구문
LONG SCardTransmit(
[in] SCARDHANDLE hCard,
[in] LPCSCARD_IO_REQUEST pioSendPci,
[in] LPCBYTE pbSendBuffer,
[in] DWORD cbSendLength,
[in, out, optional] LPSCARD_IO_REQUEST pioRecvPci,
[out] LPBYTE pbRecvBuffer,
[in, out] LPDWORD pcbRecvLength
);
매개 변수
[in] hCard
SCardConnect 함수에서 반환된 참조 값입니다.
[in] pioSendPci
명령의 프로토콜 헤더 구조에 대한 포인터입니다. 이 버퍼는 SCARD_IO_REQUEST 구조의 형식이며 그 뒤에 특정 PCI(프로토콜 제어 정보)가 잇습니다.
T=0, T=1 및 원시 프로토콜의 경우 PCI 구조는 상수입니다. 스마트 카드 하위 시스템은 각각 기호 SCARD_PCI_T0, SCARD_PCI_T1 및 SCARD_PCI_RAW 사용하여 참조할 수 있는 전역 T=0, T=1 또는 원시 PCI 구조를 제공합니다.
[in] pbSendBuffer
카드 쓸 실제 데이터에 대한 포인터입니다.
T=0의 경우 데이터 매개 변수는 다음 구조에 따라 pbSendBuffer 가 가리키는 주소에 배치됩니다.
struct {
BYTE
bCla, // the instruction class
bIns, // the instruction code
bP1, // parameter to the instruction
bP2, // parameter to the instruction
bP3; // size of I/O transfer
} CmdBytes;
카드 전송된 데이터는 송신 버퍼 바로 뒤에 있어야 합니다. 카드 데이터가 전송되지 않고 반환되는 데이터가 없는 특수한 경우 bP3은 전송되지 않습니다.
멤버 | 의미 |
---|---|
|
T=0 명령 클래스입니다. |
|
T=0 명령 클래스의 명령 코드입니다. |
|
명령 코드를 완료하는 참조 코드입니다. |
|
ISO 7816-4, 섹션 8.2.1당 명령 중에 전송될 데이터 바이트 수입니다. |
[in] cbSendLength
pbSendBuffer 매개 변수의 길이(바이트)입니다.
T=0의 경우 카드 데이터가 전송되지 않고 반환되는 데이터가 없는 특수한 경우 이 길이는 bP3 멤버가 전송되지 않음을 반영해야 합니다. 길이는 이어야 sizeof(CmdBytes) - sizeof(BYTE)
합니다.
[in, out, optional] pioRecvPci
명령의 프로토콜 헤더 구조에 대한 포인터와 사용 중인 프로토콜과 관련된 반환된 PCI(프로토콜 제어 정보)를 수신하는 버퍼가 뒤따릅니다. PCI가 반환되지 않으면 이 매개 변수는 NULL 일 수 있습니다.
[out] pbRecvBuffer
카드 반환된 데이터에 대한 포인터입니다.
T=0의 경우 데이터 뒤에 SW1 및 SW2 상태 바이트가 바로 뒤따릅니다. 카드 데이터가 반환되지 않으면 이 버퍼에는 SW1 및 SW2 상태 바이트만 포함됩니다.
[in, out] pcbRecvLength
pbRecvBuffer 매개 변수의 길이(바이트)를 제공하고 스마트 카드 받은 실제 바이트 수를 받습니다.
SCardTransmit는 SCARD_AUTOALLOCATE 지원하지 않으므로 이 값을 SCARD_AUTOALLOCATE 수 없습니다.
T=0의 경우 SW1 및 SW2 상태 바이트를 받으려면 수신 버퍼가 2바이트 이상이어야 합니다.
반환 값
함수가 스마트 카드 서비스 요청을 성공적으로 보내면 반환 값이 SCARD_S_SUCCESS.
함수가 실패하면 오류 코드를 반환합니다. 자세한 내용은 스마트 카드 반환 값을 참조하세요.
설명
SCardTransmit 함수는 스마트 카드 및 판독기 액세스 함수입니다. 다른 액세스 함수에 대한 자세한 내용은 스마트 카드 및 읽기 권한자 액세스 함수를 참조하세요.
T=0 프로토콜의 경우 다시 수신된 데이터는 SW1 및 SW2 상태 코드이며 응답 데이터 앞에 표시될 수 있습니다. 다음 단락은 데이터를 전송하고 명령을 발급하는 데 사용되는 송신 및 수신 버퍼에 대한 정보를 제공합니다.
예제
다음 예제에서는 스마트 카드 서비스 요청을 보내는 방법을 보여줍니다.
// Transmit the request.
// lReturn is of type LONG.
// hCardHandle was set by a previous call to SCardConnect.
// pbSend points to the buffer of bytes to send.
// dwSend is the DWORD value for the number of bytes to send.
// pbRecv points to the buffer for returned bytes.
// dwRecv is the DWORD value for the number of returned bytes.
lReturn = SCardTransmit(hCardHandle,
SCARD_PCI_T0,
pbSend,
dwSend,
NULL,
pbRecv,
&dwRecv );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed SCardTransmit\n");
exit(1); // or other appropriate error action
}
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winscard.h |
라이브러리 | Winscard.lib |
DLL | Winscard.dll |