Поделиться через


Метод ISCardCmd::BuildCmd

[Метод BuildCmd доступен для использования в операционных системах, указанных в разделе Требования. Он недоступен для использования в Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях, Windows Vista, Windows Server 2008 и последующих версиях операционной системы. Модули смарт-карт предоставляют аналогичные функции.]

Метод BuildCmd создает допустимую единицу данных протокола приложения команд (APDU) для передачи в смарт-карта.

Синтаксис

HRESULT BuildCmd(
  [in] BYTE         byClassId,
  [in] BYTE         byInsId,
  [in] BYTE         byP1,
  [in] BYTE         byP2,
  [in] LPBYTEBUFFER pbyData,
  [in] LONG         *p1Le
);

Параметры

byClassId [in]

Идентификатор класса команд.

byInsId [in]

Идентификатор инструкции команды.

byP1 [in]

Первый параметр команды.

byP2 [in]

Второй параметр команды.

pbyData [in]

Указатель на часть данных команды.

p1Le [in]

Указатель на целое число LONG, содержащее ожидаемую длину возвращаемых данных.

Возвращаемое значение

Метод возвращает одно из следующих возможных значений.

Код возврата Описание
S_OK
Operation completed successfully (Операция выполнена успешно).
E_INVALIDARG
Один из параметров недопустим.
E_POINTER
Был передан плохой указатель.
E_OUTOFMEMORY
Недостаточно памяти.

 

Комментарии

Чтобы инкапсулировать команду в другую команду, вызовите Команду Encapsulate.

Список всех методов, предоставляемых этим интерфейсом, см. в разделе ISCardCmd.

В дополнение к приведенным выше кодам com-ошибок этот интерфейс может возвращать код ошибки смарт-карта, если для выполнения запроса была вызвана функция смарт-карта. Дополнительные сведения см. в разделе Возвращаемые значения смарт-карты.

Примеры

В следующем примере показано, как создать команду APDU. В примере предполагается, что pISCardCmd является допустимым указателем на экземпляр интерфейса ISCardCmd , а pIByteRequest является допустимым указателем на экземпляр интерфейса IByteBuffer , инициализированный с помощью предыдущего вызова метода IByteBuffer::Initialize .

LONG       lLe = 0;
HRESULT    hr;

hr = pISCardCmd->BuildCmd(0x00,   // Some cards prefer 0xC0
                          0xa4,   // 'Select File'
                          0x00,
                          0x00,
                          pIByteRequest,
                          &lLe);
if (FAILED(hr))
{
    printf("Failed ISCardCmd::BuildCmd\n");
    // Take other error handling action as needed.
}

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Окончание поддержки клиентов
Windows XP
Прекращение поддержки сервера
Windows Server 2003
Заголовок
Scarddat.h
Библиотека типов
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd определяется как D5778AE3-43DE-11D0-9171-00AA00C18068

См. также раздел

Инкапсулировать

ISCardCmd