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


Метод ISCardISO7816::WriteBinary

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

Метод WriteBinary создает команду application protocol data unit (APDU), которая записывает двоичные значения в элементарный файл.

В зависимости от атрибутов файла команда выполняет одну из следующих операций:

  • Логическое ИЛИ битов, уже присутствующих в карта с битами, указанными в команде APDU (логическое состояние стертых битов файла равно 0).
  • Логические И битов, уже присутствующих в карта с битами, указанными в команде APDU (логическое состояние стертых битов файла равно 1).
  • Однократная запись в карта битов, указанных в команде APDU.

Если в байте кода данных не указано, применяется поведение логического ИЛИ.

Синтаксис

HRESULT WriteBinary(
  [in]      BYTE         byP1,
  [in]      BYTE         byP2,
  [in]      LPBYTEBUFFER pData,
  [in, out] LPSCARDCMD   *ppCmd
);

Параметры

byP1 [in]

Смещение до расположения записи от начала двоичного файла (EF). Если b8= 1 в P1, то b7 и b6 из P1 задается равным нулю (биты RFU), b5 — b1 из P1 — короткий идентификатор EF, а P2 — смещение первого байта, записываемого в единицах данных с начала файла. Если b8=0 в P1, то P1|| P2 — это смещение первого байта, записываемого в единицах данных, от начала файла.

byP2 [in]

Смещение до расположения записи от начала двоичного файла (EF). Если b8= 1 в P1, то b7 и b6 из P1 задается равным нулю (биты RFU), b5 — b1 из P1 — короткий идентификатор EF, а P2 — смещение первого байта, записываемого в единицах данных с начала файла. Если b8=0 в P1, то P1|| P2 — это смещение первого байта, записываемого в единицах данных, от начала файла.

pData [in]

Указатель на строку записываемых единиц данных.

ppCmd [in, out]

На входе — указатель на объект интерфейса ISCardCmd или NULL.

При возврате он заполняется командой APDU, созданной этой операцией. Если параметру ppCmd присвоено значение NULL, объект интеллектуальной картаISCardCmd создается внутренним образом и возвращается с помощью указателя ppCmd.

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

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

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

 

Комментарии

Инкапсулированную команду можно выполнить только в том случае, если состояние безопасности смарт-карта удовлетворяет атрибутам безопасности обрабатываемого начального файла.

Если команда содержит допустимый короткий элементарный идентификатор, она задает файл как текущий элементарный файл.

Если двоичная операция записи была применена к единице данных однократной операции записи EF, любая дальнейшая операция записи, ссылающаяся на эту единицу данных, будет прервана, если содержимое единицы данных или индикатор логического стертого состояния (при наличии), присоединенного к этой единице данных, отличается от логического состояния очистки.

Элементарные файлы без прозрачной структуры не могут быть записаны. Инкапсулируемая команда прерывается при применении к элементарном файлу без прозрачной структуры.

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

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

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Окончание поддержки клиентов
Windows XP
Окончание поддержки сервера
Windows Server 2003
Заголовок
Scardssp.h
Библиотека типов
Scardsrv.tlb
DLL
Scardssp.dll
IID
IID_ISCardISO7816 определяется как 53B6AA68-3F56-11D0-916B-00AA00C18068

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

EraseBinary

ISCardISO7816

ReadBinary

UpdateBinary