Метод ISCardCmd::get_ApduReply
[Метод get_ApduReply доступен для использования в операционных системах, указанных в разделе Требования. Он недоступен для использования в Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях, Windows Vista, Windows Server 2008 и последующих версиях операционной системы. Модули смарт-карт предоставляют аналогичные функциональные возможности.]
Метод get_ApduReply получает ОТВЕТ APDU, помещая его в определенный буфер байтов. Ответ может иметь значение NULL , если транзакция не была выполнена с командой APDU.
Синтаксис
HRESULT get_ApduReply(
[out] LPBYTEBUFFER *ppReplyApdu
);
Параметры
-
ppReplyApdu [out]
-
Указатель на буфер байтов (сопоставленный с объектом IStream ), который содержит ответное сообщение APDU при возврате.
Возвращаемое значение
Метод возвращает одно из следующих возможных значений.
Код возврата | Описание |
---|---|
|
Operation completed successfully (Операция выполнена успешно). |
|
Недопустимый параметр ppReplyApdu . |
|
В ppReplyApdu передан недопустимый указатель. |
|
Недостаточно памяти. |
Комментарии
Чтобы определить длину ответа APDU, вызовите get_ApduReplyLength.
Чтобы задать новый APDU ответа, вызовите put_ApduReply.
Список всех методов, предоставляемых этим интерфейсом, см. в разделе ISCardCmd.
Помимо кодов ошибок COM, перечисленных выше, этот интерфейс может возвращать код ошибки смарт-карта, если для выполнения запроса была вызвана функция смарт-карта. Дополнительные сведения см. в разделе Возвращаемые значения смарт-карты.
Примеры
В следующем примере показано, как получить данные ответа. В примере предполагается, что lLe — это переменная типа LONG , значение которой было задано при предыдущем вызове метода ISCardCmd::get_ApduReplyLength , что pIByteReply является допустимым указателем на экземпляр интерфейса IByteBuffer , а pISCardCmd — допустимым указателем на экземпляр интерфейса ISCardCmd .
HRESULT hr;
if (lLe > 0)
{
// Get reply data if available.
hr = pISCardCmd->get_ApduReply(&pIByteReply);
if (FAILED(hr))
{
printf("Failed ISCardCmd::get_ApduReply.\n");
// Take other error handling action as needed.
}
else
{
BYTE byReplyBytes[256];
LONG lBytesRead;
hr = pIByteReply->Read(byReplyBytes, lLe, &lBytesRead);
if (FAILED(hr))
{
printf("Failed IByteBuffer::Read.\n");
// Take other error handling action as needed.
}
// Use the bytes in byReplyBytes as needed.
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows XP [только классические приложения] |
Минимальная версия сервера |
Windows Server 2003 [только классические приложения] |
Окончание поддержки клиентов |
Windows XP |
Окончание поддержки сервера |
Windows Server 2003 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
IID |
IID_ISCardCmd определяется как D5778AE3-43DE-11D0-9171-00AA00C18068 |
См. также раздел